+
    –°³j  ã                   óJ   € R t ^ RIt^ RItRR.t ! R R4      t ! R R4      tR# )zAutograd anomaly mode.NÚdetect_anomalyÚset_detect_anomalyc                   ó^   a € ] tR t^t o RtR
V 3R lR lltV 3R lR ltV 3R lR ltRtV t	R	# )r   a  Context-manager that enables anomaly detection for the autograd engine.

This does two things:

- Running the forward pass with detection enabled will allow the backward
  pass to print the traceback of the forward operation that created the failing
  backward function.
- If ``check_nan`` is ``True``, any backward computation that generates "nan"
  value will raise an error. Default ``True``.

.. warning::
    This mode should be enabled only for debugging as the different tests
    will slow down your program execution.

Example:
    >>> # xdoctest: +REQUIRES(env:TORCH_DOCTEST_ANOMALY)
    >>> import torch
    >>> from torch import autograd
    >>> class MyFunc(autograd.Function):
    ...     @staticmethod
    ...     def forward(ctx, inp):
    ...         return inp.clone()
    ...
    ...     @staticmethod
    ...     def backward(ctx, gO):
    ...         # Error during the backward pass
    ...         raise RuntimeError("Some error in backward")
    ...         return gO.clone()
    >>> def run_fn(a):
    ...     out = MyFunc.apply(a)
    ...     return out.sum()
    >>> inp = torch.rand(10, 10, requires_grad=True)
    >>> out = run_fn(inp)
    >>> out.backward()
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "/your/pytorch/install/torch/_tensor.py", line 93, in backward
            torch.autograd.backward(self, gradient, retain_graph, create_graph)
          File "/your/pytorch/install/torch/autograd/__init__.py", line 90, in backward
            allow_unreachable=True)  # allow_unreachable flag
          File "/your/pytorch/install/torch/autograd/function.py", line 76, in apply
            return self._forward_cls.backward(self, *args)
          File "<stdin>", line 8, in backward
        RuntimeError: Some error in backward
    >>> with autograd.detect_anomaly():
    ...     inp = torch.rand(10, 10, requires_grad=True)
    ...     out = run_fn(inp)
    ...     out.backward()
        Traceback of forward call that caused the error:
          File "tmp.py", line 53, in <module>
            out = run_fn(inp)
          File "tmp.py", line 44, in run_fn
            out = MyFunc.apply(a)
        Traceback (most recent call last):
          File "<stdin>", line 4, in <module>
          File "/your/pytorch/install/torch/_tensor.py", line 93, in backward
            torch.autograd.backward(self, gradient, retain_graph, create_graph)
          File "/your/pytorch/install/torch/autograd/__init__.py", line 90, in backward
            allow_unreachable=True)  # allow_unreachable flag
          File "/your/pytorch/install/torch/autograd/function.py", line 76, in apply
            return self._forward_cls.backward(self, *args)
          File "<stdin>", line 8, in backward
        RuntimeError: Some error in backward

c                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€Ú\/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/autograd/anomaly_mode.pyÚ__annotate__Údetect_anomaly.__annotate__O   s   ø€ ÷ 	
ñ 	
¨$ñ 	
ó    c                óª   € \         P                  ! 4       V n        Wn        \         P                  ! 4       V n        \        P                  ! R ^R7       R# )zqAnomaly Detection has been enabled. This mode will increase the runtime and should only be enabled for debugging.)Ú
stacklevelN)ÚtorchÚis_anomaly_enabledÚprevÚ	check_nanÚis_anomaly_check_nan_enabledÚprev_check_nanÚwarningsÚwarn)Úselfr   s   &&r   Ú__init__Údetect_anomaly.__init__O   s>   € Ü×,Ò,Ó.ˆŒ	Ø"ŒÜ#×@Ò@ÓBˆÔÜ�Šð8ð ÷		
r   c                ó   <€ V ^8„  d   QhRR/# r   r	   )r
   r   s   "€r   r   r   Z   s   ø€ ÷ 8ñ 8˜4ñ 8r   c                óH   € \         P                  ! R V P                  4       R# )TN)r   Úset_anomaly_enabledr   ©r   s   &r   Ú	__enter__Údetect_anomaly.__enter__Z   s   € Ü×!Ò! $¨¯©Ö7r   c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r   Úargsr   N©Úobject)r
   r   s   "€r   r   r   ]   ó   ø€ ÷ Bñ B™fð B¨ñ Br   c                ó\   € \         P                  ! V P                  V P                  4       R # ©N©r   r   r   r   ©r   r%   s   &*r   Ú__exit__Údetect_anomaly.__exit__]   ó   € Ü×!Ò! $§)¡)¨T×-@Ñ-@ÖAr   )r   r   r   N©T©
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r!   r-   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      s,   ø‡ € ñ@÷D	
ò 	
÷8ð 8÷Bö Br   c                   ó^   a € ] tR t^at o RtR
V 3R lR lltV 3R lR ltV 3R lR ltRtV t	R	# )r   a,  Context-manager that sets the anomaly detection for the autograd engine on or off.

``set_detect_anomaly`` will enable or disable the autograd anomaly detection
based on its argument :attr:`mode`.
It can be used as a context-manager or as a function.

See ``detect_anomaly`` above for details of the anomaly detection behaviour.

Args:
    mode (bool): Flag whether to enable anomaly detection (``True``),
                 or disable (``False``).
    check_nan (bool): Flag whether to raise an error when the backward
                      generate "nan"

c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r   Úmoder   r   N)Úbool)r
   r   s   "€r   r   Úset_detect_anomaly.__annotate__r   s"   ø€ ÷ 3ñ 3™Tð 3©dð 3¸dñ 3r   c                óš   € \         P                  ! 4       V n        \         P                  ! 4       V n        \         P
                  ! W4       R # r*   )r   r   r   r   r   r   )r   r<   r   s   &&&r   r   Úset_detect_anomaly.__init__r   s1   € Ü×,Ò,Ó.ˆŒ	Ü#×@Ò@ÓBˆÔÜ×!Ò! $Ö2r   c                ó   <€ V ^8„  d   QhRR/# r   r	   )r
   r   s   "€r   r   r>   w   s   ø€ ÷ ñ ˜4ñ r   c                ó   € R # r*   r	   r    s   &r   r!   Úset_detect_anomaly.__enter__w   s   € Ùr   c                ó$   <€ V ^8„  d   QhRS[ RR/# r$   r&   )r
   r   s   "€r   r   r>   z   r(   r   c                ó\   € \         P                  ! V P                  V P                  4       R # r*   r+   r,   s   &*r   r-   Úset_detect_anomaly.__exit__z   r/   r   )r   r   Nr0   r1   r9   s   @r   r   r   a   s*   ø‡ € ñ÷ 3ò 3÷
ð ÷Bö Br   )r6   r   r   Ú__all__r   r   r	   r   r   Ú<module>rH      s6   ðá ã ã ð Ð1Ð
2€÷RBñ RB÷jBó Br   