U ì·€gWã@sôdZddlZddlmZer|ddlmZddlmZddlmZddlmZddlm Z dd lm Z dd lm Z dd lm Z dd l mZed kržddlmZndZzddlmZWn ek rÒddlmZYnXdd„ZGdd„dƒZeƒZdS)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_resolvercCs,z |j}Wntk r&|jj}YnX|S)z5Utility method for django's deprecated resolver.regex)ÚregexÚAttributeErrorÚpattern)Zresolver_or_patternr©rúY/opt/hc_python/lib/python3.8/site-packages/sentry_sdk/integrations/django/transactions.pyÚ get_regex#s  rc@sheZdZe d¡Ze d¡Ze d¡Ze d¡Ze d¡Z e d¡Z iZ dd„Z dd d „Z dd d „Zd S)Ú RavenResolverz<(?:([^>:]+):)?([^>]+)>z\(\?\:([^\)]+)\)z\(\?P<(\w+)>[^\)]+\)+z \([^\)]+\)z\[([^\]]+)\|([^\]]+)\]z([A-Z]+)([a-z])cCsÆtdk r8t|dƒr8t|jtƒr8|j dd„t|jjƒ¡St|ƒj}|j  dd„|¡}|j  dd„|¡}|j  d|¡}|j  dd„|¡}|  d d ¡  d d ¡  d d ¡  d d ¡  dd ¡  dd¡  dd ¡}|S)zà Clean up urlpattern regexes into something readable by humans: From: > "^(?P\w+)/athletes/(?P\w+)/$" To: > "{sport_slug}/athletes/{athlete_slug}/" NrcSsd| d¡S)Nú{%s}r ©Úgroup©ÚmrrrÚMóz)RavenResolver._simplify..cSsd| d¡S)Nz%sérrrrrrVrcSsd| d¡S)NrrrrrrrrYrz{var}cSs | d¡S)Nrrrrrrr_rú^Úú$ú?z\Az\Zz//ú/ú\)r ÚhasattrÚ isinstancerÚ_new_style_group_matcherÚsubÚstrZ_routerÚ_optional_group_matcherÚ_named_group_matcherÚ_non_named_group_matcherÚ_either_option_matcherÚreplace)ÚselfrÚresultrrrÚ _simplify:sHÿþ ý ÿ  ÿþýüûúÿ zRavenResolver._simplifyNc sút|ƒ |¡}|sdS|dkr&|g}n||kr8||g}|| ¡d…}|jD]¦}|jsvˆ |||¡}|rN|SqNnt|ƒ |¡s†qNzˆj|WStk rªYnXd ‡fdd„|Dƒ¡}|ˆ  |¡} |   d¡säd| } | ˆj|<| SdS)Nrc3s|]}ˆ |¡VqdS©N)r0)Ú.0Úp©r.rrÚ ‹sz)RavenResolver._resolve..r") rÚsearchÚendZ url_patternsÚcallbackÚ_resolveÚ_cacheÚKeyErrorÚjoinr0Ú startswith) r.ÚresolverÚpathÚparentsÚmatchÚnew_pathrZmatch_Úprefixr/rr4rr9ns6    zRavenResolver._resolvecCst|ƒ}| ||¡}|Sr1)rr9)r.r?Zurlconfr>rArrrÚresolve”s zRavenResolver.resolve)N)N)Ú__name__Ú __module__Ú __qualname__ÚreÚcompiler&r)r*r+r,Z _camel_rer:r0r9rDrrrrr-sÿ     4 )ýr)Ú__doc__rHÚtypingrZdjango.urls.resolversrrrrrrr r Údjangor ZDJANGO_VERSIONr Z django.urlsrÚ ImportErrorZdjango.core.urlresolversrrZLEGACY_RESOLVERrrrrÚs,           r