
    Nwg`                     n    d 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Zdd	Zdd
Z eee      Zy)zN
Provide urlresolver functions that return fully qualified URLs or view names
    )NoReverseMatch)reverse)lazy)api_settings)replace_query_paramNc                     || S t         j                  g}|D ]0  }|s||j                  v s|j                  |   }t        | ||      } 2 | S )z
    Given an incoming request, and an outgoing URL representation,
    append the value of any built-in query parameters.
    )r   URL_FORMAT_OVERRIDEGETr   )urlrequest	overridesparamvalues        M/var/www/horilla/myenv/lib/python3.12/site-packages/rest_framework/reverse.pypreserve_builtin_query_paramsr      sb    
 
 	((I  9ew{{*KK&E%c5%8C9
 J    c                     t        |dd      }|	  |j                  | ||||fi |}nt        | ||||fi |}t	        ||      S # t        $ r t        | ||||fi |}Y 'w xY w)z
    If versioning is being used then we pass any `reverse` calls through
    to the versioning scheme instance, so that the resulting URL
    can be modified if needed.
    versioning_schemeN)getattrr   r   _reverser   )viewnameargskwargsr   formatextraschemer   s           r   r   r       s     W148F	M &..4&RERC xvwH%H(g66  	M 8T67FLeLC	Ms   A A! A!c                 d    ||xs i }||d<   t        | f||d|}|r|j                  |      S |S )z
    Same as `django.urls.reverse`, but optionally takes a request
    and returns a fully qualified URL, using the request to get the base URL.
    r   )r   r   )django_reversebuild_absolute_uri)r   r   r   r   r   r   r   s          r   r   r   4   sL    
 2!x

EV
Eu
EC))#..Jr   )N)NNNN)__doc__django.urlsr   r   r   django.utils.functionalr   rest_framework.settingsr   rest_framework.utils.urlsr   r   r   strreverse_lazy r   r   <module>r(      s8    ' 1 ( 0 9(7( GS!r   