
    <%i              	          d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZmZ ej                  dk\  rd dlmZmZmZmZ nd dlmZmZmZmZ ej                  dk\  rd dlmZ nd dlmZ  eded	ef   
      Z G d d      Z e       Zd"dededdfdZd"dededdfdZd#dZe j8                  d        Z ej<                  d      d        Zdedede fdZ!d"dedededefdZ"dedededefdZ#d"de
e   fdZ$d Z%d edefd!Z&y)$    N)defaultdict)AnyCallableDefaultDictListOptionalTupleTypeVar)      )FinalLiteral	TypedDict_TypedDictMeta)r   
   )	TypeGuardF.)boundc                      e Zd ZU  ee      Zeeef   ed<    ee      Z	eeef   ed<   g Z
eeee   ee   ef      ed<   dZdZdZdZdZd Zd Zej,                  d        ZddZddZddZd	eee   ef   fdZdeded	d
fdZddZy
)GeneratorStats_warn_cache_error_cache_tracesF c                     d| j                   vrddlm} |j                  | _        	 | j                   |   S # t
        $ r t        |      w xY w)Nsilentr   )spectacular_settings)__dict__drf_spectacular.settingsr   DISABLE_ERRORS_AND_WARNINGSr   KeyErrorAttributeError)selfnamer   s      P/usr/local/footviz/venv/lib/python3.12/site-packages/drf_spectacular/drainage.py__getattr__zGeneratorStats.__getattr__"   sL    4==(E.JJDK	'==&& 	' &&	's	   6 Ac                 H    t        | j                  xs | j                        S N)boolr   r   r#   s    r%   __bool__zGeneratorStats.__bool__+   s    D$$9(9(9::    c              #   d   K   d| j                   c| _         }	 d  || _         y # || _         w xY wwNT)r   )r#   tmps     r%   silencezGeneratorStats.silence.   s.     S	DK#DKs   0$ 0	-0returnNc                 l    | j                   j                          | j                  j                          y r(   )r   clearr   r*   s    r%   resetzGeneratorStats.reset6   s&     !r,   c                 <    d| _         d| _        d| _        d| _        y )Nz[0;34mz[0;31mz[0;33mz[0m)_blue_red_yellow_clearr*   s    r%   enable_colorzGeneratorStats.enable_color:   s    !
 	#r,   c                     d| _         y r.   )_trace_linenor*   s    r%   enable_trace_linenoz"GeneratorStats.enable_trace_lineno@   s
    !r,   c                     | j                   D cg c]
  }|d   s	| }}|r|d   \  }}}|r| d| n|}nd}dj                  d | j                   D              }||fS c c}w )Nr   :r   z > c              3   &   K   | ]	  }|d      yw)   N ).0ts     r%   	<genexpr>z4GeneratorStats._get_current_trace.<locals>.<genexpr>J   s      <!1 <s   )r   join)r#   rE   source_locations
sourcefilelineno_source_locationbreadcrumbss           r%   _get_current_tracez!GeneratorStats._get_current_traceC   su    '+||<!qtA<<$4R$8!J:@AfX6jO Ojj <t|| <<++ =s
   
AAmsgseverityc                    |dv sJ |dk(  r| j                   n| j                  }| j                         \  }}|r| j                   | dnd}||dk(  r| j                  n| j
                  z  }||j                          z  }||rd| dndz  }|| j                  z   t        |      z   }| j                  s||vrt        |t        j                         ||xx   dz  cc<   y )	N)warningerrorrR   z: r   z [z]: file   )r   r   rN   r6   r8   r7   
capitalizer9   strr   printsysstderr)r#   rO   rP   cacherL   rM   prefixs          r%   emitzGeneratorStats.emitM   s    ////$,	$9  t?P?P'+'>'>'@$7FDJJ<03B(i"7$,,TYYFX((*+,;B{m3'D@t{{"SX-{{s%/#CJJ'c
a
r,   c                 p   | j                   s| j                  s| j                  rt        dt	        | j                  j                                dt        | j                         dt	        | j                  j                                dt        | j                         d	t        j                         y y y )Nz&
Schema generation summary:
Warnings: z (z unique)
Errors:   z	 unique)
rT   )	r   r   r   rY   sumvalueslenrZ   r[   r*   s    r%   emit_summaryzGeneratorStats.emit_summary\   s    {{ 0 0D4E4E !1!1!8!8!:;<Bs4CSCS?T>U V !2!2!9!9!;<=RDDUDU@V?WWac ZZ	 5F{r,   r1   N)__name__
__module____qualname__r   intr   r   rX   __annotations__r   r   r   r	   r   r<   r6   r7   r8   r9   r&   r+   
contextlibcontextmanagerr0   r4   r:   r=   rN   r^   rc   rC   r,   r%   r   r      s    )4S)9KS#X&9*5c*:L+c3h':>@GT%x}c9:;@MEDGF';  " ",E(3-*<$= , s t r,   r   rO   delayedr1   c                     |r,t        |dg       }|j                  |        t        |d|       y t        j	                  | d       y )NwarningsrR   get_overrideappendset_overrideGENERATOR_STATSr^   )rO   rl   rn   s      r%   warnrt   i   s;    R8Wj(3S),r,   c                     |r,t        |dg       }|j                  |        t        |d|       y t        j	                  | d       y )NerrorsrS   ro   )rO   rl   rv   s      r%   rS   rS   r   s;    gx4cWh/S'*r,   c                  ,    t         j                          y r(   )rs   r4   rC   r,   r%   reset_generator_statsrx   {   s    r,   c              #      K   t        |       \  }}t        j                  j                  ||| j                  f       d t        j                  j                          yw)zR
    Adds a message to be used as a prefix when emitting warnings and errors.
    N)_get_source_locationrs   r   rq   re   popobjrI   rJ   s      r%   add_trace_messager~      sK     
 .c2J""J#EF	!s   AA i  maxsizec                     	 t        j                  |       }	 t        j                  rt        j                  |       d   nd }||fS #  d }Y 5xY w#  d }Y ||fS xY w)NrV   )inspectgetsourcefilers   r<   getsourcelinesr|   s      r%   rz   rz      sn    **3/
 4C3P3P'',Q/VZ v

vs   A *A AAr}   propc                     t        | t        j                        r| j                  } t	        | d      sy|| j
                  vryy)N_spectacular_annotationFT)
isinstance	functoolspartialfunchasattrr   )r}   r   s     r%   has_overrider      s=    #y(()hh3123...r,   defaultc                     t        | t        j                        r| j                  } t	        | |      s|S | j
                  |   S r(   )r   r   r   r   r   r   )r}   r   r   s      r%   rp   rp      s;    #y(()hhT"&&t,,r,   valuec                     t        | d      si | _        n-d| j                  vr| j                  j                         | _        || j                  |<   | S )Nr   )r   r   r   copy)r}   r   r   s      r%   rr   rr      sM    312&(#	"#,,	6&)&A&A&F&F&H#(-C%Jr,   c           
         |xs | j                   }t        |       D cg c]a  }t        t        | |d             s|| j                  v s8||j
                  j                         v s|dk(  st        t        | |d       d      r|c c}S c c}w )Nlistmapping)schemadircallablegetattrhttp_method_namesmethod_mappingra   r   )viewr   items      r%   get_view_method_namesr      s    "t{{FThwtT4/H&ID***v,,3355v~wtT40)<	 	  s   BA
Bc                    t        | |      || j                  v rj                  dk7  rS t        j                        fd       }t        d      rj                  j                         |_        t        | ||       |S )z
    Prevent modifying a view method which is derived from other views. Changes to
    a derived method would leak into the view where the method originated from.
    Break derivation by wrapping the method and explicitly setting it on the view.
    handlerc                      | |g|i |S r(   rC   )r#   requestargskwargsmethods       r%   wrapped_methodz+isolate_view_method.<locals>.wrapped_method   s    dG5d5f55r,   r   )	r   r   re   r   wrapsr   r   r   setattr)r   method_namer   r   s      @r%   isolate_view_methodr      s}     T;'F dmm#9(D__V6 6
 vx  & 2 2 4D+~.r,   user_functionc                 :     t        j                  d      |       S )z" simple polyfill for python < 3.9 Nr   )r   	lru_cache)r   s    r%   r\   r\      s    ,9t,];;r,   r(   rd   )'rj   r   r   rZ   collectionsr   typingr   r   r   r   r   r	   r
   version_infor   r   r   r   typing_extensionsr   r   r   rs   rX   rt   rS   rx   rk   r~   r   rz   r)   r   rp   rr   r   r   r\   rC   r,   r%   <module>r      sv      
 # M M Mv  LKw +CxS)*L L^ !"-c -C -4 -+s +S +D + " " T" #c   -c - -s -c -c  S S 	S	 	4< <q <r,   