+
    &jK#                         ^ RI t ^ RIHt ^ RI Ht ^ RIHtHt ^ RIHtH	t	H
t
Ht ^ RIHt ^RIHt  ! R R	]4      t] P                   ! R
 R4      4       tR R ltR R ltR tR tR# )    NCallable)	dataclass)AnyProtocol)_C_opsautogradTensor)_pytree)utilsc                   ,   a  ] tR t^t o V 3R ltRtV tR# )InfoProtocolc                N   < V ^8  d   Qh/ S[ R,          ;R&   S[ R,          ;R&   #    N_backward_fn_setup_context_fnr   )format__classdict__s   "o/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/torch/_library/autograd.py__annotate__InfoProtocol.__annotate__   s#     T/! $&      N__name__
__module____qualname____firstlineno____annotate_func____static_attributes____classdictcell__r   s   @r   r   r            r   r   c                   ,   a  ] tR t^t o V 3R ltRtV tR# )Infoc                N   < V ^8  d   Qh/ S[ R,          ;R&   S[ R,          ;R&   # r   r   )r   r   s   "r   r   Info.__annotate__   s%     T/!   $& r   r   Nr   r$   s   @r   r'   r'      r%   r   r'   c                P    V ^8  d   QhR\         P                  R\        R\        /# )r   opinforeturn)r	   
OpOverloadr   r   )r   s   "r   r   r      s*     [ [4?? [, [8 [r   c           
      j  a aaaa	a
 R S P                    RS P                   RS P                   2p\        P                  ! S P
                  4      o
\         ! R R4      4       oV 3R lo	V
VV 3R lpVV 3R lp\        V\        P                  3R\        V4      R\        V4      /4      oS P
                  p\        ;QJ d4    R	 . VP                  OVP                  O 4       F  '       g   K   R
M)	  RM%! R	 . VP                  OVP                  O 4       4      '       d   \        S4      oVVV	3R lpV# )GeneratedBackwardFor__c                   ,   a  ] tR t^t o V 3R ltRtV tR# )$make_autograd_impl.<locals>.Metadatac                \   < V ^8  d   Qh/ S[ P                  ;R&   S[S[S[3,          ;R&   # )r   keysetkeyword_only_args)r   DispatchKeySetdictstrr   )r   r   s   "r   r   1make_autograd_impl.<locals>.Metadata.__annotate__   s+     !!!   S>) r   r   Nr   r$   s   @r   Metadatar3      r%   r   r;   c                  "  < V R,          pV RR p \         P                  ! 4       ;_uu_ 4        VP                  pVP                  pSP                  ! V\         P
                  ,          .V O5/ VB pVuuRRR4       #   + '       g   i     R# ; i)   N)r   _AutoDispatchBelowAutogradr5   r6   
redispatch_after_autograd_keyset)argsmetadatar5   kwargsresultr+   s   *    r   forward_no_grad+make_autograd_impl.<locals>.forward_no_grad"   sp    8CRy**,,__F//F]]6B,E,E#EWWPVWF	 -,,,s   AA==B	c           	        < VR,          pVRR p\         P                  ! 4       ;_uu_ 4        VP                  pVP                  pSP                  ! V\         P
                  ,          .VO5/ VB pSP                  '       dS   \        P                  ! SP                  W4      w  rS'       d   SP                  WWER7       MSP                  WVR7       VuuRRR4       #   + '       g   i     R# ; i)r=   N)ctxinputskeyword_only_inputsoutput)rI   rJ   rL   r>   )
r   r?   r5   r6   r@   rA   r   r   fill_defaults_schema)	rI   rB   rC   r5   rD   rE   has_kwarg_only_argsr,   r+   s	   &*    r   forward#make_autograd_impl.<locals>.forward,   s    8CRy**,,__F//F]]6B,E,E#EWWPVWF%%%  %222::tL&**& +  **s*O/ -,,,s   B)C!!C2	c                   < SP                   '       d]    V P                  pV P                  R R V n        SP                   ! V .VO5!  pW n        \        V\        4      '       d   . VOR N5# VR 3# \	        RS R24      h  XT n        i ; i)NzTrying to backward through zQ but no autograd formula was registered. Please use register_autograd to add one.r>   )r   needs_input_grad
isinstancetupleRuntimeError)rI   gradsprev_needs_input_gradrE   r,   r+   s   &*  r   backward$make_autograd_impl.<locals>.backwardI   s    =(+(<(<%'*';';CR'@$**377'<$&%((&&4<)" .7 8
 	
	 (=$s   4A? ?	BrP   rY   c              3   b   "   T F%  p\         P                  ! VP                  4      x  K'  	  R # 5iN)r   is_tensorlist_like_typetype).0as   & r   	<genexpr>%make_autograd_impl.<locals>.<genexpr>d   s)      5A 	%%aff--5s   -/TFc                    < \         P                  ! 4       '       d8   \         P                  ! V!  '       d   SP                  ! . VOS! W4      N5!  pV# S! . VOS! W4      N5!  pV# r\   )r   is_grad_enabled_any_requires_gradapply)r5   rB   r6   rE   	Generatedr;   rF   s   &*, r   autograd_impl)make_autograd_impl.<locals>.autograd_impll   sb    B$9$94$@$@__PdPHV,OPF  %PdPHV,OPFr   )
_namespace_opname_overloadnamer   rO   rN   r   r^   r
   Functionstaticmethodany	argumentsreturnssupports_tensorlist)r+   r,   namerP   rY   schemarh   rg   r;   rF   rO   s   ff     @@@@r   make_autograd_implru      s   'a

|1REUEUDVWD33BJJ?* * *:
" 			|G,X.	
I ZZF
s 56##5fnn5sss 56##5fnn5   (	2	 r   c                0    V ^8  d   QhR\         R\         /# )r   clsr-   )r   )r   s   "r   r   r   v   s     j jS jS jr   c                   aaaa V P                   oV P                  oV P                  o\         ! R R4      4       oVV3R lpV3R lpVV3R lpWn         W n        W0n        V # )a$  Allows a given autograd.Function class to support List[Tensor] inputs/outputs.

Regular autograd.Function has a constraint that it only directly supports autograd for
Tensors. Applying @supports_tensorlist enables an autograd.Function to support
autograd for List[Tensor] inputs and outputs.
c                   4   a  ] tR t^t o RtRtV 3R ltRtV tR# )%supports_tensorlist.<locals>.MetadataNc                   < V ^8  d   Qh/ S[ P                  ;R&   S[ P                  R,          ;R&   S[R,          ;R&   # )r   
input_specNoutput_specresult_is_tuple)r   TreeSpecbool)r   r   s   "r   r   2supports_tensorlist.<locals>.Metadata.__annotate__   s?     $$$  %%,3  +	 r   r   )	r   r   r   r    r}   r~   r!   r"   r#   r$   s   @r   r;   rz      s      04'+	  r   r;   c                   < VR,          pVRR p\        VS4      '       g   \        R4      h\        P                  ! \	        V4      VP
                  4      pS! V .VO5!  p\        V\        4      Vn        VP                  '       g   V3p\        P                  ! V\        4      w  rEWRn
        \        V R4      '       d   \        R4      hW n        \        V4      # )r=   NzNYI: calling supports_tensorlist autograd.Function.forward directly. You should probably be calling .apply instead. Please file an issue if not._pt_metadataz@Please don't set ctx._pt_metadata; PyTorch uses it to store infor>   )rT   NotImplementedErrorr   tree_unflattenlistr|   rU   r~   tree_flattennot_list_of_tensorr}   hasattrrV   r   )rI   rB   rC   rE   flat_resultr}   r;   orig_forwards   &*    r   new_forward(supports_tensorlist.<locals>.new_forward   s    8CRy(H--%/ 
 %%d4j(2E2EFc)D)#-fe#< '''YF#*#7#7@R#S *3''R  $[!!r   c                 \  < \        V R 4      '       g   \        R4      hV P                  p\        P                  ! \        V4      VP                  4      pV P                  p \        P                  ! \        V P                  RR 4      VP                  4      V n        S! V .VO5!  pW0n        \        V\        4      '       g   V3p\        P                  ! V\        4      w  rVWbP                  8w  d   \        RV RVP                   R24      h\        VR.,           4      #   Y0n        i ; i)r   zNYI: calling supports_tensorlist autograd.Function.backward directly. This will automatically get called by PyTorch autograd. Please file an issue if you need this.NzRExpected the return from backward to be of the same structure as the inputs. Got: z (return from backward), z	 (inputs)r>   )r   r   r   r   r   r   r}   rS   r|   rT   rU   r   not_list_of_optional_tensorrV   )rI   rW   rC   rX   grad_inputsflat_grad_inputsgrad_inputs_specorig_backwards   &*     r   new_backward)supports_tensorlist.<locals>.new_backward   s0   sN++%9  ##&&tE{H4H4HI !$ 4 4	9#*#9#9S))#2./1D1D$C  (4e4K#8 +u--&.K .5-A-A4.
* 222''7&88Q&&'y2 
 %.//% $9 s   "AD# #D+c                    < \         P                  ! V \        R 7      w  rS! V4      pS! . VOVN5!  pVP                  f   \	        R4      h\         P
                  ! \        V4      VP                  4      pVP                  '       g^   \        V\        4      '       g   \	        R\        V4       24      h\        V4      ^8w  d   \	        R\        V4       24      hV^ ,          # V# ))is_leafz%metadata.output_spec must not be Nonezresult must be tuple, got z%result tuple must have length 1, got )r   r   r   r}   AssertionErrorr   r   r~   rT   rU   r^   len)rB   	flat_argsr|   rC   rE   r;   
orig_applys   *    r   	new_apply&supports_tensorlist.<locals>.new_apply   s     ' 4 4TCU V	J'1Y11' !HII''Vh6J6JK'''fe,,$'A$v,%PQQ6{a$;CK=I  !9r   )rP   rY   rf   r   )rw   r   r   r   r;   r   r   r   s   &   @@@@r   rr   rr   v   s]     ;;LLLMJ, , ,
"2*0X" KLIJr   c                     \        V \        4      '       d   R # \        V \        4      '       d5   \        ;QJ d    R V  4       F  '       g   K   R# 	  R # ! R V  4       4      # R# )Fc              3   L   "   T F  p\        V\        4      '       * x  K  	  R # 5ir\   rT   r   r_   ls   & r   ra   %not_list_of_tensor.<locals>.<genexpr>   s     ;dz!V,,,ds   "$TrT   rU   r   ro   trees   &r   r   r      sK    $$s;d;ss;s;s;d;;;r   c                     \        V \        4      '       d   R # \        V \        4      '       d5   \        ;QJ d    R V  4       F  '       g   K   R# 	  R # ! R V  4       4      # R# )Fc              3   b   "   T F%  qR J;'       d    \        V\        4      '       * x  K'  	  R # 5ir\   r   r   s   & r   ra   .not_list_of_optional_tensor.<locals>.<genexpr>   s'     M1D=>>Av)>%>>s   //Tr   r   s   &r   r   r      sK    $$sMMssMsMsMMMMr   )dataclassescollections.abcr   r   typingr   r   torchr   r	   r
   r   torch.utilsr    r   r   r'   ru   rr   r   r   r   r   r   <module>r      s`     $ !   , ,  '8 '
 ' ' '
[|jZr   