+
    j3                        R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
 R R ltR R ltR R	 ltR
 R ltR R ltR R ltR R ltR R ltRR R lltRR R lltR t]R8X  d   ]P.                  ! ]! 4       4       R# R# )zv
gunicornc - Gunicorn control interface CLI

Interactive and single-command modes for controlling Gunicorn instances.
N)_get_default_control_socket)ControlClientControlClientErrorparse_commandc                0    V ^8  d   QhR\         R\        /#    datareturndictstr)formats   "E/var/www/idalgo/venv/lib/python3.14/site-packages/gunicorn/ctl/cli.py__annotate__r      s       #     c           
     D   V P                  R. 4      pV'       g   R# . pVP                  RR RRR RRR	 RR
 24       VP                  R4       V F}  pVP                  RR4      pVP                  RR4      pVP                  R4      '       d   RMRpVP                  R4      pVe   V R2MRpVP                  VR RVR RVR	 RV 24       K  	  VP                  R4       VP                  RV P                  R\        V4      4       R24       RP                  V4      # )z"Format workers output for display.workerszNo workers runningPID<10 AGE<6BOOTED<8	LAST_BEATpid?agebootedyesnolast_heartbeats agon/a Total: countz workers
z(----------------------------------------getappendlenjoin)	r	   r   lineswr   r   r   hbhb_strs	   &        r   format_workersr2      s   hhy"%G#E	LLE#;abz8B-qFG	LLeeE3eeE3%%//tUU#$!#B4uUCy#b6"+Qvh?@  
LL	LL7488GS\:;8DE99Ur   c                0    V ^8  d   QhR\         R\        /# r   r   )r   s   "r   r   r   -   s     ' 't ' 'r   c           
     J   V P                  R4      '       g   R# . pVP                  RV P                  R4       24       VP                  R4       V P                  R. 4      pV'       d   VP                  R4       VP                  RR	 R
RR R
RR R
R 24       VP                  R!4       V F  pVP                  RR4      pVP                  RR4      pRP                  VP                  R. 4      4      R,          pVP                  R4      pVe   V R2MRpVP                  VR	 R
VR R
VR R
V 24       K  	  VP                  R4       V P                  R. 4      pV'       d   VP                  R4       VP                  RR R
RR	 R
R 24       VP                  R"4       V Fk  p	V	P                  RR4      R,          p
V	P                  R^ 4      pV	P                  R4      pVe   \        V4      MRpVP                  V
R R
VR	 R
V 24       Km  	  R P                  V4      # )#z(Format dirty workers output for display.enabledzDirty arbiter not runningzDirty arbiter PID: r   r%   r   zDIRTY WORKERS:r   r   r   r   r   APPSz<30r   r   r   , apps:N   Nr"   r#   r$   zDIRTY APPS:APPWORKERSLIMITimport_pathcurrent_workersworker_countnoner(   z<------------------------------------------------------------2--------------------------------------------------)r*   r+   r-   r   )r	   r.   r   r/   r   r   r8   r0   r1   apppathcurrentlimit	limit_strs   &             r   format_dirtyrG   -   s   88I*E	LL&txx&789	LLhhy"%G%&c{!E":Qvcl!K=IJXA%%s#C%%s#C99QUU62./4D'(B%'^t5\FLLC9Ac"XQtCj&BC  	R88FBD]#c{!Ic?!G9=>XC77=#.s3Dgg/3GGGN+E&+&7E
VILLD:Qwsm1YK@A  99Ur   c                0    V ^8  d   QhR\         R\        /# r   r   )r   s   "r   r   r   W   s      t  r   c                `   . pV P                  R4      pV'       di   \        VR,          4      p\        VR,          ^<,          4      p\        V^<,          4      pV'       d   V RV RV R2pMV'       d
   V RV R2pMV R2pMRpVP                  RV 24       VP                  RV P                  R	R4       24       VP                  R
V P                  R^ 4       24       VP                  RV P                  R^ 4       24       VP                  RV P                  R^ 4       24       VP                  RV P                  R^ 4       24       VP                  RV P                  R^ 4       24       V P                  R4      pV'       d   VP                  RV 24       RP                  V4      # )z Format stats output for display.uptimei  zh zm sunknownzUptime:           zPID:              r   zWorkers current:  workers_currentzWorkers target:   workers_targetzWorkers spawned:  workers_spawnedzWorkers killed:   workers_killedzReloads:          reloadsdirty_arbiter_pidzDirty arbiter:    r(   )r*   intr+   r-   )r	   r.   rJ   hoursminutesseconds
uptime_str	dirty_pids   &       r   format_statsrY   W   s   EXXhFFdN#v}+,frk"!7"WIRy:J#9Bwiq1J#9AJ
	LL%j\23	LL%dhhui&@%ABC	LL%dhh/@!&D%EFG	LL%dhh/?&C%DEF	LL%dhh/@!&D%EFG	LL%dhh/?&C%DEF	LL%dhhy!&<%=>?,-I))5699Ur   c                0    V ^8  d   QhR\         R\        /# r   r   )r   s   "r   r   r   x   s      4 C r   c           	        V P                  R. 4      pV'       g   R# . pVP                  RR RRR RR 24       VP                  R4       V FT  pVP                  R	R
4      pVP                  RR
4      pVP                  RR
4      pVP                  VR RVR RV 24       KV  	  VP                  R4       VP                  RV P                  R\        V4      4       R24       RP                  V4      # )z$Format listeners output for display.	listenerszNo listeners boundADDRESSz<40r   TYPEr   FDaddressr   typefdr%   r&   r'   z
 listenersr(   z7-------------------------------------------------------r)   )r	   r\   r.   lnraddrltyperb   s   &      r   format_listenersrf   x   s    b)I#E	LLIc?!F2;av67	LLwwy#&$WWT3Sz5*AbT23	  
LL	LL7488GS^<=ZHI99Ur   c                0    V ^8  d   QhR\         R\        /# r   r   )r   s   "r   r   r      s        r   c                    . p\        V P                  4       4       FO  pW,          p\        V\        4      '       d   RP	                  R V 4       4      pVP                  V RV 24       KQ  	  RP	                  V4      # )z!Format config output for display.r7   c              3   8   "   T F  p\        V4      x  K  	  R # 5iN)r   ).0vs   & r   	<genexpr> format_config.<locals>.<genexpr>   s     4ec!ffe   z: r(   )sortedkeys
isinstancelistr-   r+   )r	   r.   keyvalues   &   r   format_configrv      sn    E diik"	eT""II4e44EuBug&'	 # 99Ur   c                0    V ^8  d   QhR\         R\        /# r   r   )r   s   "r   r   r      s      d s r   c                l   V P                  R/ 4      p. pVP                  R4       VP                  R4       V'       d!   \        R VP                  4        4       4      M^ p\	        VP                  4       4       F'  w  rEVP                  RVRV^,            2 RV 24       K)  	  RP                  V4      # )	zFormat help output for display.commandszAvailable commands:r%   c              3   8   "   T F  p\        V4      x  K  	  R # 5irj   )r,   )rk   cmds   & r   rm   format_help.<locals>.<genexpr>   s     6os#c((oro     <r   r(   )r*   r+   maxrq   rp   itemsr-   )r	   ry   r.   max_lenr{   descs   &     r   format_helpr      s    xx
B'HE	LL&'	LL ;Cc6hmmo66GHNN,-	r#a!}_-Qtf56 . 99Ur   c                0    V ^8  d   QhR\         R\        /# r   r   )r   s   "r   r   r      s     ; ;T ;c ;r   c                   . pV P                  R/ 4      pVP                  R4       VP                  RVP                  RR4       24       VP                  R4       V P                  R. 4      pVP                  RV P                  R	^ 4       R
24       V'       d   VP                  RRR RRR RRR RR 24       VP                  RR( 24       V F~  pVP                  RR4      pVP                  RR4      pVP                  R4      '       d   RMRpVP                  R4      pVe   V R2MRp	VP                  RVR RVR RVR RV	 24       K  	  MVP                  R4       VP                  R4       V P                  R4      p
V
'       Ed   VP                  R4       VP                  RV
P                  RR4       24       VP                  R4       V P                  R. 4      pVP                  RV P                  R ^ 4       R
24       V'       Ed   VP                  RRR RRR RR! 24       VP                  RR) 24       V F  pVP                  RR4      pVP                  RR4      pVP                  R". 4      pV'       d   V^ ,          P                  R#4      R*,          pVP                  RVR RVR RV 24       VR$,           F7  pVP                  R#4      R*,          pVP                  RRR RRR RV 24       K9  	  K  VP                  RVR RVR R%24       K  	  M4VP                  R4       M"VP                  R4       VP                  R&4       R'P                  V4      # )+z#Format show all output for display.arbiterzARBITER (master)z  PID: r   r   r%   web_workerszWEB WORKERS (web_worker_count)r}   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   z  (none)dirty_arbiterzDIRTY ARBITERdirty_workerszDIRTY WORKERS (dirty_worker_countr6   r8   ::   NNz
 (no apps)z  (not running)r(   z&--------------------------------------rA   )r*   r+   splitr-   )r	   r.   r   r   r/   r   r   r   r0   r1   r   r   r8   	first_apprB   app_names   &               r   
format_allr      s6   E hhy"%G	LL#$	LL77;;uc2345	LL ((="-K	LL=*<a!@ ACDr%AeBZq"Q{mLMr(_%A%%s#C%%s#CeeHooU4F'(B%'^t5\FLL2c#YaBxq1VHEF  	Z 	LL HH_-M}_%w}00<=>?R "5txx0Da'H&IKL=LL2eC[%1VH=>LL2hZ)"eeE3'eeE3'uuVR( $Qc 22 6ILL2c#YaBxq!DE#Bxx#&99S>"#5r"S2b'8*%EF  ( LL2c#YaBxz!BC # LL$_%&'99Ur   c                <    V ^8  d   QhR\         R\        R\         /# )r   commandr	   r
   )r   r   )r   s   "r   r   r      s!        S      r   c                ~   V P                  4       P                  4       pVR8X  d   \        V4      # VR8X  d   \        V4      # VR8X  d   \	        V4      # VR8X  d   \        V4      # VR8X  d   \        V4      # VR8X  d   \        V4      # VR8X  d   \        V4      # V'       d   \        P                  ! V^R7      # R	# )
z
Format response data based on command.

Args:
    command: Original command string
    data: Response data dictionary

Returns:
    Formatted string for display
zshow allzshow workersz
show dirtyz
show statszshow listenerszshow confighelpindentOK)lowerstripr   r2   rG   rY   rf   rv   r   jsondumps)r   r	   	cmd_lowers   && r   format_responser      s     %%'I J$	n	$d##	l	"D!!	l	"D!!	&	&%%	m	#T""	f	4   ::d1--r   c                H    V ^8  d   QhR\         R\         R\        R\        /# )r   socket_pathr   json_outputr
   r   boolrS   )r   s   "r   r   r     s(      S 3 T c r   c           	     
    \        V 4      ;_uu_ 4       p\        V4      w  rEV'       d%   V RRP                  V4       2P                  4       MTpVP	                  V4      pV'       d#   \        \        P                  ! V^R7      4       M\        WG4      p\        V4        RRR4       ^ #   + '       g   i     R# ; i  \         d*   p	\        RT	 2\        P                  R7        Rp	?	^# Rp	?	i\         d     ^# i ; i)z
Execute single command and exit.

Args:
    socket_path: Path to control socket
    command: Command to execute
    json_output: If True, output raw JSON

Returns:
    Exit code (0 for success, 1 for error)
r   r   NError: file)r   r   r-   r   send_commandprintr   r   r   r   sysstderrKeyboardInterrupt)
r   r   r   clientr{   argsfull_commandresultoutputes
   &&&       r   run_commandr     s    ;''6%g.IC@DcU!CHHTN#34::<#L((6Fdjj23(5f ('''  sm#**- sG   C AB-*9B-#C -B>	8C >C DC00D=DDc                <    V ^8  d   QhR\         R\        R\        /# )r   r   r   r
   r   )r   s   "r   r   r   .  s&     W W W4 WC Wr   c                    ^ RI pRp \        V 4      pVP                  4        \        RT  24       \        R4       \        4        \        P                  P                  R4      pT'       d    XP                  T4       ^ p   \        R	4      P                  4       pT'       g   K%  TP!                  4       R9   d   M \#        T4      w  rT
'       d%   T	 R
R
P%                  T
4       2P                  4       MT	pTP'                  T4      pT'       d#   \        \(        P*                  ! T^R7      4       M\-        Y4      p\        T4        \        4        K  TP/                  4        T'       d    XP3                  T4       T#  T#   \         d    Rp ELi ; i  \         d*   p\        RT 2\        P                  R7        Rp?^# Rp?ii ; i  \         d     EL`i ; i  \         d    \        4         K  i ; i  \         d^   p\        RT 24        TP/                  4        TP                  4         Rp?L  \         d    \        R4       ^p  Rp?EK  i ; iRp?ii ; i  \0         d    \        4        ^p EL-i ; i  \4         d     T# i ; i  TP/                  4        T'       d%    XP3                  T4       i   \4         d     i i ; ii ; i)z
Run interactive CLI with readline support.

Args:
    socket_path: Path to control socket
    json_output: If True, output raw JSON

Returns:
    Exit code
NTFr   r   zConnected to z3Type 'help' for available commands, 'quit' to exit.z~/.gunicornc_historyz
gunicorn> r   r   zConnection lost. Exiting.)quitexitq)readlineImportErrorr   connectr   r   r   r   osrC   
expanduserread_history_fileFileNotFoundErrorinputr   EOFErrorr   r   r-   r   r   r   r   closer   write_history_file	Exception)r   r   r   has_readliner   r   history_file	exit_codeliner{   r   r   r   r   s   &&            r   run_interactiver   .  s   {+
 
M+
'(	
?@	G 77%%&<=L	&&|4 I/\*002
 zz|44)$/	DH#a'78>>@c,,\:$**VA67,S9F&M G 	++L9   S    sm#**- ! 		  * & 	sm$LLNNN$$) 56 !I	  	  	 	++L9  s1  F F /G I+ G$ I+ &I+ =J ?AH  !H  4I+ 5H  I+ 1J	 FFG&G

GG! G!$G=9I+ :J <G==I+  I(I# H?:I+ ?I I#I+ J I  I##I((I+ +JJ JJ 	JJK5KKKKKKc                    \         P                  ! R\         P                  RR7      p V P                  RR\	        4       RR7       V P                  RR	R
R7       V P                  RRRRR7       V P                  RRRRR7       V P                  4       pVP                  '       d   ^ RIHp \        RV R24       ^ # VP                  p\        P                  P                  V4      '       g4   \        P                  P                  \        P                  ! 4       V4      pVP                   '       d!   \#        W1P                   VP$                  4      # \'        W1P$                  4      # )z#Main entry point for gunicornc CLI.zGunicorn control interfacea?  
Examples:
  gunicornc                      # Interactive mode (default socket)
  gunicornc -s /tmp/myapp.ctl    # Interactive mode with custom socket
  gunicornc -c "show workers"    # Single command mode
  gunicornc -c "worker add 2"    # Add 2 workers
  gunicornc -c "show stats" -j   # Output stats as JSON
        )descriptionformatter_classepilogz-sz--socketzUControl socket path (default: auto-detected based on XDG_RUNTIME_DIR or ~/.gunicorn/))defaultr   z-cz	--commandzExecute single command and exit)r   z-jz--json
store_truezOutput raw JSON (for scripting))actionr   z-vz	--versionzShow version and exit)__version__zgunicornc (gunicorn r   )argparseArgumentParserRawDescriptionHelpFormatteradd_argumentr   
parse_argsversiongunicornr   r   socketr   rC   isabsr-   getcwdr   r   r   r   )parserr   r   r   s       r   mainr     s9   $$0 <<F j+-d   k.  
 h.   k$   D|||($[M34++K 77==%%ggll299;<|||;dii@@{II66r   __main__)F)__doc__r   r   r   r   gunicorn.configr   gunicorn.ctl.clientr   r   r   r2   rG   rY   rf   rv   r   r   r   r   r   r   __name__r    r   r   <module>r      s}   
   	 
 7 P P2'TB, ;| FBWt67r zHHTV r   