
    si                        S r SSKJ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  SS	KJr  S
SKJr  S
SKJrJrJrJr  \(       a  SSKJr   " S S\5      r " S S\5      r " S S\5      r\" SS9S 5       rg)z
Defines a JSON reporter backend

This reporter backend is used to provide JSON strings for output rendering. It is
essentially just a wrapper around ``conda.common.serialize.json.dumps``.
    )annotationsN)RLock)TYPE_CHECKING   )DEFAULT_JSON_REPORTER_BACKEND)swallow_broken_pipe)json   )hookimpl)CondaReporterBackendProgressBarBaseReporterRendererBaseSpinnerBase)Anyc                  l   ^  \ rS rSrSr S	   S
U 4S jjjrSS jrS r\S 5       r	\
S 5       rSrU =r$ )JSONProgressBar   z*
Progress bar that outputs JSON to stdout
c                0   > [         TU ]  U5        X l        g N)super__init__enabled)selfdescriptionr   kwargs	__class__s       Dlib/python3.13/site-packages/conda/plugins/reporter_backends/json.pyr   JSONProgressBar.__init__$   s     	%    c                    U R                  5          U R                  (       a1  [        R                  R	                  SU R
                   SUS S35        S S S 5        g ! , (       d  f       g = f)N
{"fetch":"z)","finished":false,"maxval":1,"progress":fz}
 )get_lockr   sysstdoutwriter   )r   fractions     r   	update_toJSONProgressBar.update_to-   sN    ]]_||

  !$"2"2!33\]efg\hhno __s   AA
A+c                    g r    r   s    r   refreshJSONProgressBar.refresh4       r   c                   U R                  5          U R                  (       aK  [        R                  R	                  SU R
                   S35        [        R                  R                  5         S S S 5        g ! , (       d  f       g = f)Nr!   z,","finished":true,"maxval":1,"progress":1}
 )r#   r   r$   r%   r&   r   flushr,   s    r   closeJSONProgressBar.close7   sT    ]]_||

  !$"2"2!33bc 

  " __s   AA77
Bc                Z    [        U S5      (       d  [        5       U l        U R                  $ )z/
Used for our own sys.stdout.write/flush calls
_lock)hasattrr   r5   )clss    r   r#   JSONProgressBar.get_lock@   s$    
 sG$$CIyyr   )r   )T)r   strr   bool)returnNone)__name__
__module____qualname____firstlineno____doc__r   r(   r-   r   r2   classmethodr#   __static_attributes____classcell__)r   s   @r   r   r      s[        # #  r   r   c                  x    \ rS rSrSrSS jrSS jr    SS jr    SS jrSSS jjr	 S     SS jjr
S	rg
)JSONReporterRendererJ   z4
Default implementation for JSON reporting in conda
c                .    [         R                  " U5      $ r   r	   dumpsr   datar   s      r   renderJSONReporterRenderer.renderO       zz$r   c                .    [         R                  " U5      $ r   rI   rK   s      r   detail_view JSONReporterRenderer.detail_viewR   rO   r   c                    [        U[        [        45      (       a  [        R                  " SU05      $ [        R                  " U5      $ )Nenvs)
isinstancelisttupler	   rJ   rK   s      r   	envs_listJSONReporterRenderer.envs_listU   s7     dT5M**::vtn--zz$r   c                    [        U40 UD6$ r   )r   )r   r   r   s      r   progress_bar!JSONReporterRenderer.progress_bar\   s    
 {5f55r   c                    [        X5      $ r   )JSONSpinner)r   messagefail_messages      r   spinnerJSONReporterRenderer.spinnerc   s    711r   c                    g)z3
For this class, we want this method to do nothing
Nr+   )r   r_   choicesdefaults       r   promptJSONReporterRenderer.promptf   s    r   r+   N)rL   r   r;   r9   )rL   zdict[str, str | int | bool]r;   r9   )rL   z3list[str] | dict[str, dict[str, str | bool | None]]r;   r9   )r   r9   r;   r   )zfailed
)r_   r9   r`   r9   r;   r   )Proceed)yesnori   )r_   r9   re   r9   r;   r9   )r=   r>   r?   r@   rA   rM   rQ   rX   r[   ra   rf   rC   r+   r   r   rF   rF   J   sk       G 	 66 
	62 OTHK	 r   rF   c                  $    \ rS rSrSrS rS rSrg)r^   n   zZ
This class for a JSONSpinner does nothing because we do not want to include this output.
c                    g r   r+   r,   s    r   	__enter__JSONSpinner.__enter__s   r/   r   c                    g r   r+   )r   exc_typeexc_valexc_tbs       r   __exit__JSONSpinner.__exit__v   r/   r   r+   N)r=   r>   r?   r@   rA   rn   rt   rC   r+   r   r   r^   r^   n   s    r   r^   T)tryfirstc               #  6   #    [        [        S[        S9v   g7f)zg
Reporter backend for JSON

This is the default reporter backend that returns objects as JSON strings.
z2Default implementation for JSON reporting in conda)namer   rendererN)r   r   rF   r+   r   r   conda_reporter_backendsrz   z   s      *H% s   )rA   
__future__r   r$   	threadingr   typingr   base.constantsr   	common.ior   common.serializer	    r   typesr   r   r   r   r   r   rF   r^   rz   r+   r   r   <module>r      sy    # 
    ; , $   (o (V!/ !H	+ 	 


r   