
    tni6                        d Z ddlZddlmZ er0ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	lm
Z
 dd
lmZ ddlmZ ddlmZ edk    rddlmZ ndZ	 ddlmZ n# e$ r	 ddlmZ Y nw xY wddZ G d d          Z e            ZdS )zr
Copied from raven-python.

Despite being called "legacy" in some places this resolver is very much still
in use.
    N)TYPE_CHECKING)URLResolver)Dict)List)Optional)
URLPattern)Tuple)Union)Pattern)VERSION)   r   )RoutePattern)get_resolverresolver_or_patternUnion[URLPattern, URLResolver]returnPattern[str]c                 P    	 | j         }n# t          $ r | j        j         }Y nw xY w|S )z5Utility method for django's deprecated resolver.regex)regexAttributeErrorpattern)r   r   s     h/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/django/transactions.py	get_regexr   #   s@    2#) 2 2 2#+12Ls   
 ##c            	       "   e Zd ZU  ej        d          Z ej        d          Z ej        d          Z ej        d          Z ej        d          Z	 ej        d          Z
i Zded<   d	d
defdZ	 ddddeddddfdZ	 ddeddddfdZdS )RavenResolverz<(?:([^>:]+):)?([^>]+)>z\(\?\:([^\)]+)\)z\(\?P<(\w+)>[^\)]+\)+z
\([^\)]+\)z\[([^\]]+)\|([^\]]+)\]z([A-Z]+)([a-z])zDict[URLPattern, str]_cacher   r   r   c                    t           ]t          |d          rMt          |j        t                     r3| j                            d t          |j        j                            S t          |          j        }| j	                            d |          }| j
                            d |          }| j                            d|          }| j                            d |          }|                    dd	                              d
d	                              dd	                              dd	                              dd	                              dd                              dd	          }|S )z
        Clean up urlpattern regexes into something readable by humans:

        From:
        > "^(?P<sport_slug>\w+)/athletes/(?P<athlete_slug>\w+)/$"

        To:
        > "{sport_slug}/athletes/{athlete_slug}/"
        Nr   c                 2    d|                      d          z  S )N{%s}r   groupms    r   <lambda>z)RavenResolver._simplify.<locals>.<lambda>K   s    &1771::-     c                 2    d|                      d          z  S )Nz%s   r    r"   s    r   r$   z)RavenResolver._simplify.<locals>.<lambda>T   s    D1771::<M r%   c                 2    d|                      d          z  S )Nr   r'   r    r"   s    r   r$   z)RavenResolver._simplify.<locals>.<lambda>W   s    !''!**9L r%   z{var}c                 ,    |                      d          S )Nr'   r    r"   s    r   r$   z)RavenResolver._simplify.<locals>.<lambda>]   s    1771:: r%   ^ $?z\Az\Zz///\)r   hasattr
isinstancer   _new_style_group_matchersubstr_router   _optional_group_matcher_named_group_matcher_non_named_group_matcher_either_option_matcherreplace)selfr   results      r   	_simplifyzRavenResolver._simplify9   sa    $++ %7?L99 % 044--s7?3I/J/J   7##+ -112M2MvVV *../L/LfUU .227FCC ,001E1EvNN NN3##WS"WS"WUBWUBWT3WT2 	 r%   Nresolverr   pathparentszOptional[List[URLResolver]]zOptional[str]c                 P    t          |                              |          }|sd S ||g}n
||vr||gz   }||                                d          }|j        D ]}|j        s                     |||          }|r|c S 't          |                              |          sJ	  j        |         c S # t          $ r Y nw xY wd                     fd|D                       }| 	                    |          z   }	|	
                    d          sd|	z   }	|	 j        |<   |	c S d S )Nr+   c              3   B   K   | ]}                     |          V  d S N)r=   ).0pr;   s     r   	<genexpr>z)RavenResolver._resolve.<locals>.<genexpr>   s/      @@1T^^A..@@@@@@r%   r.   )r   searchendurl_patternscallback_resolver   KeyErrorjoinr=   
startswith)
r;   r>   r?   r@   matchnew_pathr   match_prefixr<   s
   `         r   rK   zRavenResolver._resolvel   s~    (##**400 	4?jGGW$$
*G		&, 	 	G# w'BB "!MMMw''..x88 {7++++    WW@@@@@@@@@FdnnW555F$$S)) &v#)DK MMMts   &B55
CCurlconfzJUnion[None, Tuple[URLPattern, URLPattern, URLResolver], Tuple[URLPattern]]c                 P    t          |          }|                     ||          }|S rC   )r   rK   )r;   r?   rS   r>   rO   s        r   resolvezRavenResolver.resolve   s)    
  ((h--r%   rC   )__name__
__module____qualname__recompiler2   r6   r7   r8   r9   	_camel_rer   __annotations__r4   r=   rK   rU    r%   r   r   r   ,   sC        )rz"    )bj)<==%2:&>??)rz-88'RZ(ABB
-..I&(F#(((1!A 1c 1 1 1 1n 26	' '' ' /	'
 
' ' ' 'X ae  ^ 
	     r%   r   )r   r   r   r   )__doc__rY   typingr   django.urls.resolversr   r   r   r   r   r	   r
   r   djangor   DJANGO_VERSIONr   django.urlsr   ImportErrordjango.core.urlresolversr   r   LEGACY_RESOLVERr]   r%   r   <module>rg      s    
			             111111000000 , , , , , ,V2222222L6((((((( 6 6 6555555556   p p p p p p p pf  -//s   A A*)A*