
    ce                        d Z ddlmZ ddg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 G d de          ZddZd ZddZddZddZdS )z3Navigator Exceptions and Exception handling module.    )annotationsCustomMessageExceptionexception_handlerNc                  <     e Zd ZdZd fdZed	d            Z xZS )
r   z
    Exception with custom error message.

    :param message: Message to be displayed.

                    Should be a pre-formatted HTML content.
    messagestrreturnNonec                X    t                                          |           || _        dS )z9Initialize new :class:`~CustomMessageException` instance.N)super__init__ _CustomMessageException__message)selfr   	__class__s     =lib/python3.11/site-packages/anaconda_navigator/exceptions.pyr   zCustomMessageException.__init__   s&    !!!,3    c                    | j         S )z/Content to display on qt error box or html page)r   )r   s    r   r   zCustomMessageException.message    s     ~r   r   r   r	   r
   )r	   r   )__name__
__module____qualname____doc__r   propertyr   __classcell__)r   s   @r   r   r      sg         4 4 4 4 4 4
    X    r   error	Exceptiontracer   r	   c                    dt          j        t          |                      dt          j        t          |                     dS )zFForm message when we do not get it in CustomMessageException instance.aP  
        <h1>Navigator Error</h1>
        <p>An unexpected error occurred on Navigator start-up</p>
        <h2>Report</h2>
        <p>
          Please report this issue in the anaconda
          <a href="https://github.com/ContinuumIO/anaconda-issues/issues">issue tracker</a>
        </p>
        <h2>Main Error</h2>
        <p><pre>z6</pre></p>
        <h2>Traceback</h2>
        <p><pre>z
</pre></p>)htmlescaper   )r   r   s     r   form_default_html_messager!   &   sO    7 SZZ((7 7 SZZ((7 7 7 7r   c                    ddl m} ddlm} t	          |d          st          d           |d| dd	          }|                    d
           |                                S )z&Display a Qt styled error message box.r   )start)MessageBoxErrorappz!Qt application is not initializedzNavigator Start ErrorFN)titletextreport
learn_moreiX  )anaconda_navigator.appr#   "anaconda_navigator.widgets.dialogsr$   hasattrAttributeErrorsetFixedWidthexec_)r   r#   r$   msg_boxs       r   display_qt_error_boxr1   6   s     -,,,,,BBBBBB5%   B@AAAo%	  G #==??r   r   r
   c                l   d|  d}t          j        d          \  }}t          j        |dd          5 }|                    |           ddd           n# 1 swxY w Y   t          j        d	t          j        	                    t          j
                            |                                dS )
zu
    Display a new browser tab with an error description.

    :param message: HTML content to show on web page.
    a  <!doctype html>
        <html lang="en">
          <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>Navigator Error</title>
          </head>
          <body>
            z"
          </body>
        </html>z.html)suffixwtzutf-8)encodingNzfile://)tempfilemkstemposfdopenwrite
webbrowseropen_new_taburllibrequestpathname2urlpathabspath)r   contentfile_descriptor	file_pathfile_streams        r   display_browser_error_boxrF   I   s    
 
 
 
G "*!1!A!A!AOY 
?D7	;	;	; #{'"""# # # # # # # # # # # # # # # _fn&A&A"'//R[B\B\&]&]__`````s   AAAfunc typing.Callable[..., typing.Any]args
typing.Anykwargstyping.Optional[int]c                    	  | |i |}t          |t                    r|S n&# t          $ r}t          |           Y d}~nd}~ww xY wdS )z=Handle global application exceptions and display information.N)
isinstanceintr   handle_exception)rG   rI   rK   return_value	exceptions        r   r   r   f   sy    $tT,V,,lC(( 	 	  $ $ $########$4s   " 
AA  Ac                T   ddl m} |                    | d           t          | t                    r| j        }n!t          | t          j                              }	 t          |           dS # t          $ r/}|                    |           t          |           Y d}~dS d}~ww xY w)z=This will provide a dialog for the user with the error found.r   )loggerT)exc_infoN)anaconda_navigator.utils.logsrT   criticalrN   r   r   r!   	traceback
format_excr1   r   rR   rF   )r   rT   r   rR   s       r   rP   rP   u   s     544444
OOEDO))) %/00 K-+E93G3I3IJJ+W%%%%% + + +###!'*********+s   A. .
B'8$B""B')r   r   r   r   r	   r   r   )rG   rH   rI   rJ   rK   rJ   r	   rL   )r   r   r	   r
   )r   
__future__r   __all__r   r8   r6   rX   typingurllib.requestr=   r;   r   r   r!   r1   rF   r   rP    r   r   <module>r_      s	   : 9 " " " " " "#%8
9  				                  Y   (7 7 7 7   &a a a a:   + + + + + +r   