
    yIf:                         d Z ddlmZ ddlZddlZddlZddlZddlZ G d de          Z	 G d d          Z
d Zd	 Zdd
Zedk    r( ej         eej        dd                              dS dS )zHandles communication on the backend side between frontend and backend

Please keep this file Python 2.7 compatible.
See https://tox.readthedocs.io/en/rewrite/development.html#code-style-guide
    )print_functionNc                       e Zd ZdZdS )MissingCommandzMissing commandN)__name__
__module____qualname____doc__     J/var/www/piapp/venv/lib/python3.11/site-packages/pyproject_api/_backend.pyr   r      s        r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )BackendProxyc                     || _         || _        t          j        | j                   }| j        rt	          || j                  }|| _        d S N)backend_modulebackend_object	importlibimport_modulegetattrbackend)selfr   backend_objr   s       r   __init__zBackendProxy.__init__   sM    ,))$*=>> 	<gt':;;Gr   c                     |                     d          r| n| j        }t          ||          s#t          d                    ||                     t          ||          |i |S )N_z{!r} has no attribute {!r})
startswithr   hasattrr   formatr   )r   nameargskwargs	on_objects        r   __call__zBackendProxy.__call__   sp     OOC00BDDdl	y$'' 	W !=!D!DYPT!U!UVVV'wy$''8888r   c                 L    d                     | j        j        | j                  S )Nz{}(backend={}))r   	__class__r   r   r   s    r   __str__zBackendProxy.__str__"   s    &&t~'>MMMr   c                     dS )Nr   r
   r&   s    r   _exitzBackendProxy._exit%   s    qr   c                        fddD             S )Nc                 <    i | ]}|t          j        |          S r
   )r   r   ).0kr   s     r   
<dictcomp>z0BackendProxy._optional_hooks.<locals>.<dictcomp>)   s7     

 

 

 wt|Q''

 

 

r   )get_requires_for_build_sdist prepare_metadata_for_build_wheelget_requires_for_build_wheelbuild_editableget_requires_for_build_editable#prepare_metadata_for_build_editabler
   r&   s   `r   _optional_hookszBackendProxy._optional_hooks(   s0    

 

 

 



 

 

 
	
r   N)r   r   r   r   r#   r'   r)   r5   r
   r   r   r   r      sb          9 9 9N N N  
 
 
 
 
r   r   c                  ~    t           j                                         t           j                                         d S r   )sysstderrflushstdoutr
   r   r   r9   r9   6   s0    JJr   c           
      	   | d                                          dk    }	 t          | d         t          |           dk    rd n| d                   }t          d                    |          t
          j                   n*# t          $ r t          dt
          j                    w xY w	 t                       n# t                       w xY w	 t                      }|st                       	 t
          j        d         dk    r|                                }t          j        |          }|d	         }i }	 |d
         }t          d                    ||d                               ||d
         fi |d         }||d<   |dk    r	 	 t          |d          5 }	t          j        ||	           d d d            n# 1 swxY w Y   n## t"          $ r t%          j                     Y nw xY wt          d                    ||                     t                       n# t          d                    ||                     t                       w xY wn# t          $ rt}
t)          |
t*                    r|
j        nd|d<   |
j        j        |d<   t3          |
          |d<   t)          |
t4                    st%          j                     Y d }
~
nd }
~
ww xY w	 t          |d          5 }	t          j        ||	           d d d            n# 1 swxY w Y   n## t"          $ r t%          j                     Y nw xY wt          d                    ||                     t                       nP# t          d                    ||                     t                       w xY w# 	 t          |d          5 }	t          j        ||	           d d d            n# 1 swxY w Y   n## t"          $ r t%          j                     Y nw xY wt          d                    ||                     t                       w # t          d                    ||                     t                       w xY wxY w# t"          $ r? t          d                    |          t
          j                   t                       Y nw xY w|du rndS )Nr   true      zstarted backend {})filezfailed to start backendTresultcmdz$Backend: run command {} with args {}r!   returnr)   wz Backend: Wrote response {} to {}codeexc_typeexc_msgz)Backend: incorrect request to backend: {}F)lowerr   lenprintr   r7   r:   BaseExceptionr8   r9   	read_lineversion_infodecodejsonloadsopendump	Exception	traceback	print_exc
isinstance
SystemExitrD   r%   r   strr   )argvreuse_processbackend_proxycontentparsed_messageresult_filer@   rA   outcomefile_handler	exceptions              r   runra   ;   s   GMMOOv-M$T!Wc$ii1nndd$q'RR
 	"))-88szJJJJJ	    'cj9999 	K(++ 	!	"a''!..**!Z00N(2K F$U+<CCCX`Iabbccc'-u(=ZZPXAYZZ#*x '>>k3// 8<	&,7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8  * * *')))))* <CCFKXXYYYGGGG <CCFKXXYYYGGGG# "  * * *3=i3T3T![Z[v%.%8%Az"$'	NNy!!)^<< *')))*k3// 8<	&,7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8  * * *')))))* <CCFKXXYYYGGGG <CCFKXXYYYGGGGk3// 8<	&,7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8  * * *')))))* <CCFKXXYYYGGGG <CCFKXXYYYGGGG9  	 	 	=DDWMMTWT^____GGGGG	: E!!Q(R 1sY  1B  /B:  'B''B: :C
.AQ/ 7AI 
G F<0G <G  G G G H G(%H 'G((H 3IN! 
KA*K	N! KN! L 'L	=L 	LL LL M+ L52M+ 4L55M+ +3N!Q,#O!3O	O!OO!OO! P6!P>P6 PP62Q,63Q))Q,/AR87R8c                     t                      }	 t          j        | d          }|s|st          d          n|dk    rn|dk    r||z  }<|S )NTr=   zEOF without reading anything   
   )	bytearrayosreadEOFError)fdr[   chars      r   rK   rK   s   sk    kkG	wr1~~ 	 ?=>>>5==5==tOG	 Nr   __main__r=   )r   )r	   
__future__r   r   rN   rf   r7   rS   	TypeErrorr   r   r9   ra   rK   r   exitrX   r
   r   r   <module>ro      s   
 & % % % % %      				 



        Y    
  
  
  
  
  
  
  
F  
5 5 5p     zCHSS!"" r   