o
     l³cš
  ã                	   @   sî   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 g Z
de	defdd„Zd	e	fd
d„Zde	fdd„Zd'de	fdd„Zd'de	fdd„Zd(dedg dedefdd„Zdd„ Zdefdd„Zd)d!ede	eB d"efd#d$„ZeG d%d&„ d&ƒƒZdS )*é    )Újsonify)Ú	dataclassÚfield)Údumps)ÚOptionalÚAnyÚldataÚreturnc                 C   s(   |  d u r g S t d˜ r | S  	 | gS )N© )Úlist)r   r
   r
   ú+/var/www/pp.vulcan-creative.com/io/Utils.pyÚtoList   s   

ÿr   Únumc                 C   ó*   |  d u r dS t d˜ r | S  	 t | ƒS )Nr   r
   )Úint)r   r
   r
   r   ÚtoInt   ó   

ÿr   Úitemc                 C   r   )NÚ r
   )Ústr)r   r
   r
   r   ÚtoStr   r   r   r   Údefaultc                 C   ó   z| d W S    | Y S )Nr   r
   ©Údatar   r
   r
   r   Úfirst#   ó   
r   c                 C   r   )Néÿÿÿÿr
   r   r
   r
   r   Úlast)   r   r   Fr   r   Údrop_keyc                 C   s.   i }|D ]}|  | ¡}|r|| = |||< q|S ©N)Úget)r   r   r   ZrdataÚrowÚkeyr
   r
   r   Úgroup_by/   s   

r$   c                   C   s   dS )Nz<h2>Woohoo!</h2><p>Debug:</p>r
   r
   r
   r
   r   Útst8   s   r%   c                  C   sL   ddl m}  i }| j ¡ D ]\}}|||< q| j ¡ D ]\}}|||< q|S )Nr   )Úrequest)Úflaskr&   ÚformÚitemsÚargs)r&   r   ÚkÚvr
   r
   r   Úparms;   s   

r-   NTÚtitleÚdebugc                 C   s�  dd l }| d¡}| |¡ |sd S | td˜ rP  dd l}dd l}| ¡ \}}}	|	j}
|	j}|
j	j
}| |¡ | |||
j¡}|}| d ||| ¡ |¡¡ nG   td˜ rY n  td˜ ra n  n
  t|ddd�}n)  td˜ rv n  td˜ r~ n  td˜ r† n  n  |}n	d u r’n	 t|ƒ}td| › d	�ƒ t|ƒ td
t|ƒ› d�ƒ | d| › d	�¡ | |¡ | d
t|ƒ› d�¡ d S )Nr   Úwerkzeugr
   z#EXCEPTION IN ({}, LINE {} "{}"): {}é   T)ÚindentÚensure_asciiz*************************z***********************z***************z**********************)ÚloggingÚ	getLoggerÚinfoÚ	ExceptionÚ	linecacheÚsysÚexc_infoÚtb_frameÚ	tb_linenoÚf_codeÚco_filenameÚ
checkcacheÚgetlineÚ	f_globalsÚformatÚstripÚdictr   r   r   r   ÚtupleÚprintÚtype)r.   r   r/   r4   Úloggerr8   r9   Úexc_typeZexc_objÚtbÚfÚlinenoÚfilenameÚlineÚdr
   r
   r   ÚDebugF   s@   


ö*:
rP   c                   @   sl   e Zd ZU eed�Zeeef ed< dZe	ed< dZ
eed< dd„ Zed	d
„ ƒZedd„ ƒZedd„ ƒZdS )ÚOutput)Údefault_factoryr   é   Ústatusr   Úmessagec                 C   ó   | j S r    ©Újson©Úselfr
   r
   r   Ú__str__w   s   zOutput.__str__c                 C   s   | j | j| jdœS )N©r   rT   rU   r\   rY   r
   r
   r   Úobjz   s   z
Output.objc                 C   s
   t | jƒS r    )r   r]   rY   r
   r
   r   rX   ~   s   
zOutput.jsonc                 C   rV   r    rW   rY   r
   r
   r   Úresponse‚   s   zOutput.responseN)Ú__name__Ú
__module__Ú__qualname__r   rD   r   r   Ú__annotations__rT   r   rU   r[   Úpropertyr]   rX   r^   r
   r
   r
   r   rQ   q   s   
 

rQ   )r   )F)r   NT)r'   r   Údataclassesr   r   rX   r   Útypingr   r   Ú
_debug_logr   r   r   r   r   r   r   ÚboolrD   r$   r%   r-   r7   rP   rQ   r
   r
   r
   r   Ú<module>   s     				+