o
    h`                     @   sl   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d	Zdd
dZdddZeeeZdS )zN
Provide urlresolver functions that return fully qualified URLs or view names
    )NoReverseMatch)reverse)lazy)api_settings)replace_query_paramNc                 C   sF   |du r| S t jg}|D ]}|r ||jv r |j| }t| ||} q| S )z
    Given an incoming request, and an outgoing URL representation,
    append the value of any built-in query parameters.
    N)r   URL_FORMAT_OVERRIDEGETr   )urlrequest	overridesparamvalue r   X/var/www/html/optinet_system/venv/lib/python3.10/site-packages/rest_framework/reverse.pypreserve_builtin_query_params   s   
r   c              	   K   s   t |dd}|dur/z|j| ||||fi |}W n! ty.   t| ||||fi |}Y nw t| ||||fi |}t||S )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	   r   r   r   r       s   
r   c                 K   s@   |dur|pi }||d< t | f||d|}|r||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.
    Nr   )r   r   )django_reversebuild_absolute_uri)r   r   r   r
   r   r   r	   r   r   r   r   4   s   
r   )N)NNNN)__doc__django.urlsr   r   r   django.utils.functionalr   rest_framework.settingsr   rest_framework.utils.urlsr   r   r   strreverse_lazyr   r   r   r   <module>   s    


