a
    &whJ                  	   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZzd dlmZ W n eefy   d dlZY n0 d dlmZ d dlmZ d dlZee
ddZ e!d" Z#zd dl$m$Z$ dd	 Z%W n ey4   d
d	 Z%Y n0 dd Z&dXddZ'ej(j)ej(j*fZ+dd Z,dd Z-dYddZ.dd Z/ej01drdZddZ2dd Z3ne
j4Z3dd  Z4d!d" Z5d[d$d%Z6d&d' Z7d(d) Z8d*d+ Z9zd d,l
m:Z: W n ey    d-d. Z:Y n0 d/d0 Z;d\d1d2Z<d]d3d4Z=d5d6 Z>d7d8 Z?d9d: Z@d;d< ZAd^d=d>ZBd?d@ ZCd_dAdBZDdCdD ZEdEdF ZFd`dHdIZGdJdK ZHdLdM ZIdNdO ZJdPdQ ZKdadRdSZLdTdU ZMdVdW ZNdS )b    N)AppImportError)SUPPORTED_WORKERSdevnullz	/dev/nullz
    connection keep-alive proxy-authenticate proxy-authorization
    te trailers transfer-encoding upgrade
    server date
    setproctitlec                 C   s   t d|   d S )Nzgunicorn: %sr   title r	   G/var/www/battlenet.uz/venv/lib/python3.9/site-packages/gunicorn/util.py_setproctitle4   s    r   c                 C   s   d S Nr	   r   r	   r	   r
   r   7   s    c                    sB   t | } fdd|jD }|s6td ff |d  S )Nc                    s$   g | ]}|j  kr|jkr|qS r	   groupname).0epr   r	   r
   
<listcomp>=   s   z$load_entry_point.<locals>.<listcomp>zEntry point %r not foundr   )importlib_metadatadistributionZentry_pointsImportErrorload)r   r   r   Zdist_objZepsr	   r   r
   load_entry_point;   s
    
r    gunicorn.workers.sync.SyncWorkergunicorn.workersc                 C   s~  t | r| S | dr| dd }z|dd\}}W n tyT   |}|}Y n0 zt|||W S  ty   t	 }d}t
|| |f Y n0 n| d}t|dkr | dr| dd  } | tv rt|  d}q ztd|| W S  ty   t	 }d}t
|| |f Y q0 q|d}	ztd|}
W n0 tyn   t	 }d}t
|| |f Y n0 t|
|	S d S )Nzegg:   #z)class uri %r invalid or not found: 

[%s].Zgunicorn)inspectisclass
startswithsplitrsplit
ValueErrorr   	Exception	traceback
format_excRuntimeErrorlenr   pop	importlibimport_modulejoingetattr)uridefaultsectionZ	entry_strdistr   excmsg
componentsklassmodr	   r	   r
   
load_classD   sL    





r7   c                 C   s4   t | }d}|j D ]}|jtv r|d7 }q|S )Nr   r   )r   	signature
parametersvalueskindpositionals)fsigarityparamr	   r	   r
   	get_arity|   s    


rA   c                 C   s   t | jS )z get the username for a user id)pwdgetpwuidpw_name)uidr	   r	   r
   get_username   s    rF   Fc                 C   s~   |r`| r,zt | }W n ty*   d}Y n0 t|d@ }|rJt|| n|t kr`t| | rz| t krzt|  dS )z) set user and group of workers processes FiN)	rF   KeyErrorabsos
initgroupsgetgidsetgidgetuidsetuid)rE   gidrJ   usernamer	   r	   r
   set_owner_process   s    

rQ   c                 C   s   t | || d S r   )rI   chown)pathrE   rO   r	   r	   r
   rR      s    rR   winc                 C   s   | | |r|}nt j|\}}|p(d}d}|dk rjt |}|rJ|sVn||v rVd S t| |d9 }q.tjd| tdd d S )Nr   gMbP?g      ?   z)tests may fail, delete still pending for    )
stacklevel)	rI   rS   r!   listdirtimesleepwarningswarnRuntimeWarning)funcpathnameZwaitalldirnamer   timeoutLr	   r	   r
   _waitfor   s    



rc   c                 C   s   t tj|  d S r   )rc   rI   unlink)filenamer	   r	   r
   _unlink   s    rf   c              
   C   sJ   zt |  W n8 tyD } z |jtjtjfvr0 W Y d }~n
d }~0 0 d S r   )rf   OSErrorerrnoENOENTENOTDIR)re   errorr	   r	   r
   rd      s
    rd   c                 C   s>   zt t j|  W n& ty&   Y dS  ty8   Y dS 0 dS )NFT)socket	inet_ptonAF_INET6rg   r#   )addrr	   r	   r
   is_ipv6   s    rp   8000c                 C   s.  t d| rt d| d S | dr^| dd  }z
t|W S  ty\   td| d Y n0 | drv| dd } | | }}d| v rd	| v r| d	d
 dd  }| d|g d }n8d| v r| d|g d d \}}n| dkrd| }}zt|}W n  ty    td| Y n0 | |fS )Nz
unix:(//)?r   zfd://   z"%r is not a valid file descriptor.ztcp://r   []r   z]::rU    z0.0.0.0z%r is not a valid port number.)rematchr!   r    intr#   r'   lower)netlocdefault_portfdhostportr	   r	   r
   parse_address   s.    




r   c                 C   s,   t  | t j}|t jO }t  | t j| d S r   )fcntlZF_GETFDZ
FD_CLOEXECZF_SETFDr}   flagsr	   r	   r
   close_on_exec  s    
r   c                 C   s(   t  | t jtjB }t  | t j| d S r   )r   ZF_GETFLrI   
O_NONBLOCKZF_SETFLr   r	   r	   r
   set_non_blocking  s    r   c                 C   s$   z|    W n ty   Y n0 d S r   )closerg   )sockr	   r	   r
   r     s    r   )
closerangec              	   C   s6   t | |D ]&}zt| W q
 ty.   Y q
0 q
d S r   )rangerI   r   rg   )Zfd_lowZfd_highr}   r	   r	   r
   r     s
    r   c                 C   sD   t |tr|d}dt| }d|d|dg}| | d S )Nzutf-8z%X
    s   
)
isinstancestrencoder(   r,   sendall)r   data
chunk_sizechunkr	   r	   r
   write_chunk  s
    

r   c                 C   s   |rt | |S | | d S r   )r   r   )r   r   chunkedr	   r	   r
   write'  s    
r   c              	   C   sR   |   }|dkrBz"| d t| ||W | d S | d 0 nt| ||S d S )Ng        r   r   )
gettimeoutsetblockingr   )r   r   r   ra   r	   r	   r
   write_nonblock-  s    

r   c                 C   sL   t d|t|d }t dt||t||f }t| |d d S )Nz    <html>
      <head>
        <title>%(reason)s</title>
      </head>
      <body>
        <h1><p>%(reason)s</p></h1>
        %(mesg)s
      </body>
    </html>
    )reasonmesgzl    HTTP/1.1 %s %s
    Connection: close
    Content-Type: text/html
    Content-Length: %d
    
    %slatin1)textwrapdedenthtmlescaper   r(   r   r   )r   Z
status_intr   r   Z
html_errorhttpr	   r	   r
   write_error9  s    
r   c                 C   sD   t  d }z.|dur4|jj| ju r,W ~dS |j}qW ~dS ~0 dS )zCheck whether calling a function raised a ``TypeError`` because
    the call failed or because something in the function raised the
    error.

    :param f: The function that was called.
    :return: ``True`` if the call failed.
    rU   NFT)sysexc_infotb_framef_code__code__tb_next)r=   tbr	   r	   r
   _called_with_wrong_argsP  s    	r   c              
   C   sL  |  dd}t|dkrd}n|d |d  } }zt| }W nJ ty   | drtj| rd}t|| 	ddd |f  Y n0 zt
j|dd	j}W n ty   td
| Y n0 t|t
jr|j}d  }}nt|t
jrTt|jt
jstd| |jj}z$dd |jD }dd |jD }W n  tyP   td| Y n0 ntd
| tjjtjk}	zt||}
W n8 ty   |	rtjt    td|| f Y n0 |d ur z|
|i |}
W nL t!y } z2t"|
rtd#t$t!|%  W Y d }~n
d }~0 0 |
d u r6td| t&|
sHtd|
S )Nru   r   Zapplicationr   z.pyz1Failed to find application, did you mean '%s:%s'?r   eval)modez9Failed to parse %r as an attribute name or function call.z,Function reference must be a simple name: %rc                 S   s   g | ]}t |qS r	   )astliteral_eval)r   argr	   r	   r
   r     r   zimport_app.<locals>.<listcomp>c                 S   s   i | ]}|j t|jqS r	   )r   r   r   value)r   kwr	   r	   r
   
<dictcomp>  r   zimport_app.<locals>.<dictcomp>z/Failed to parse arguments as literal values: %rz"Failed to find attribute %r in %r.rv   z%Failed to find application object: %rz$Application object must be callable.)'r!   r(   r*   r+   r   endswithrI   rS   existsr"   r   parsebodySyntaxErrorr   r   NameidCallr^   argskeywordsr#   loggingrootlevelDEBUGr-   AttributeErrorr%   print_exceptionr   r   	TypeErrorr   r,   format_exception_onlystripcallable)modulepartsobjr6   r3   Z
expressionr   r   kwargsZis_debugapper	   r	   r
   
import_appj  sn    





r   c                  C   sn   zNt t jd } t t  }| j|jkrD| j|jkrDt jd }nt  }W n tyh   t  }Y n0 |S )NZPWD)rI   statenvirongetcwdst_inost_devr$   )abcwdr	   r	   r
   r     s    r   c                 C   s&   | du rt   } tjj| ddd}|S )z@Return the current date and time formatted for a message header.NFT)	localtimeusegmt)rY   emailutils
formatdate)	timestampsr	   r	   r
   	http_date  s    r   c                 C   s   |    tv S r   )rz   r   hop_headers)headerr	   r	   r
   
is_hoppish  s    r   c                    s   dt jvrt  rt d t   t  r6t d t d | stdd t tt j	 t 
 d  dkr|t  d t  d t  d nPt tt j	  dkrt d t  d  fdd	}|tjd |tjd d
S )zo    Standard daemonization of a process.
    http://www.faqs.org/faqs/unix-faq/programmer/faq/ section 1.7
    ZGUNICORN_FDr         Tr   rU   c                    sJ   z2|   }||kr0|  r0t| t | W n tyD   Y n0 d S r   )filenoisattyrI   r   dup2r   )streamZ	fd_expectr}   Zfd_nullr	   r
   redirect   s    
zdaemonize.<locals>.redirectN)rI   r   fork_exitsetsidumaskr   openREDIRECT_TOO_RDWRset_inheritabler   r   r   stdoutstderr)Zenable_stdio_inheritancer   r	   r   r
   	daemonize  s,    





	r   c                	   C   sF   zt td W n, ty@   t dt t f  Y n0 d S )N@   z%s.%s)randomseedrI   urandomNotImplementedErrorrY   getpidr	   r	   r	   r
   r   -  s    r   c              
   C   sp   z6t | d}|  W d    n1 s*0    Y  W n4 tyj } ztd| |f W Y d }~n
d }~0 0 d S )Nr   zError: '%s' isn't writable [%r])r   r   rg   r'   )rS   r=   r   r	   r	   r
   check_is_writable4  s
    *r   utf8c                 C   s.   t | tr| S t | ts$td|  | |S )z+Converts a string argument to a byte stringz%r is not a string)r   bytesr   r   r   )r   encodingr	   r	   r
   to_bytestring<  s
    

r   c              
   C   s<   t | dsdS z|   W n tttjfy6   Y dS 0 dS )Nr   FT)hasattrr   r   rg   ioUnsupportedOperation)r   r	   r	   r
   
has_filenoF  s    
r  c                 C   sf   t dtjd |  }t|D ]*\}}|dkr6d| }t d| tjd qt dtjd tj  d S )Nz!!!)filer   zWARNING: %sz!!! %sz!!!
)printr   r   
splitlines	enumerateflush)r3   linesiliner	   r	   r
   r\   S  s    r\   c                    s   t    fdd}|S )Nc                    s    |dddt t fg  gS )Nz500 Internal Server Error)zContent-Typez
text/plainzContent-Length)r   r(   )r   Zstart_responser3   r	   r
   r   c  s
    zmake_fail_app.<locals>.app)r   )r3   r   r	   r
  r
   make_fail_app`  s    r  c                 C   s<   |  dr0tjd|  }|j|jdd  dS tj| S )Nz//r   r   )rS   )r    urllibr   urlsplit_replacerS   )r.   r   r	   r	   r
   split_request_urim  s    
r  c                 C   sB   z2|d u r|  }|j |ur$|||W d }d }n
d }d }0 d S r   )__traceback__with_traceback)tpr   r   r	   r	   r
   reraisez  s    

r  c                 C   s   t | tr| S t| dS )Nr   )r   r   )r   r	   r	   r
   bytes_to_str  s    
r  c                 C   s   t j| dS )Nzlatin-1)r  r   unquote_to_bytesdecode)stringr	   r	   r
   unquote_to_wsgi_str  s    r  )r   r   )F)F)rq   )F)F)N)F)r   )N)Or   email.utilsr   rh   r   r   r*   r   r   r   rI   rB   r   rw   rl   r   r   rY   r%   r[   importlib.metadatametadatar   ModuleNotFoundErrorr   Zgunicorn.errorsr   Zgunicorn.workersr   urllib.parser  r-   r   setr!   r   r   r   r   r7   	ParameterPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr<   rA   rF   rQ   rR   platformr    rc   rf   rd   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r\   r  r  r  r  r  r	   r	   r	   r
   <module>   s   
	  
3

!
	

	

S

V


