o
    z
                     @   sP   d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ dZdZ	d	d
 Z
dS )zUtilities for error reporting.    )absolute_import)division)unicode_literalsN)encodingzv(?P<stacktrace>Traceback \(most recent call last\):\n(?: {2}File ".*", line \d+, in .+\n {4}.+\n)+)(?P<exception>\S.+)z: {2}File "(?P<file>.*)google-cloud-sdk.*", line \d+, in .+c           	      C   s   t t| }|s
dS |  }g }t t}d}|D ].}||}|r1|||	dd d}q|d7 }|dkrB|d  |7  < q|| q|d }t
|ddd }||d< d	d
d |D d	 }|S )zGiven a stacktrace, only include Cloud SDK files in path.

  Args:
    traceback: str, the original unformatted traceback

  Returns:
    str, A new stacktrace with the private paths removed
    None, If traceback does not match traceback pattern
  Nr   file       :
c                 s   s    | ]}|V  qd S )N ).0liner   r   L/tmp/google-cloud-sdk/lib/googlecloudsdk/command_lib/error_reporting_util.py	<genexpr>O   s    
z8RemovePrivateInformationFromTraceback.<locals>.<genexpr>)researchPARTITION_TRACEBACK_PATTERN
splitlinescompileFILE_PATH_PATTERNmatchappendreplacegroupr   Decodesplitjoin)		tracebackr   stacktrace_listremove_path_stacktrace_listpattern_file_pathlines_since_matchr   exception_lineformatted_stacktracer   r   r   %RemovePrivateInformationFromTraceback%   s2   


r&   )__doc__
__future__r   r   r   r   googlecloudsdk.core.utilr   r   r   r&   r   r   r   r   <module>   s   