o
    h1                     @   sh   d dl mZmZmZmZ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
dZdddZd	S )    )URLResolverincludepathre_pathregister_converter)get_converters)RoutePattern)api_settingsc                    sL   | rt | dkr| d }ndd|  }d|  nd G  fddd}|S )	N   r   z(?:%s)|z\.%s/?z\.[a-z0-9]+/?c                       s    e Zd Z Zdd Zdd ZdS )z9_get_format_path_converter.<locals>.FormatSuffixConverterc                 S   s
   | dS )Nz./)stripselfvalue r   \/var/www/html/optinet_system/venv/lib/python3.10/site-packages/rest_framework/urlpatterns.py	to_python   s   
zC_get_format_path_converter.<locals>.FormatSuffixConverter.to_pythonc                 S   s   d| d S )N./r   r   r   r   r   to_url   s   z@_get_format_path_converter.<locals>.FormatSuffixConverter.to_urlN)__name__
__module____qualname__regexr   r   r   suffix_patternr   r   FormatSuffixConverter   s    r   )lenjoin)allowedallowed_patternr   r   r   r   _get_format_path_converter   s   

	r!   c                 C   s   d}| r|dd |  7 }|S )Ndrf_format_suffix_)r   )r   converter_namer   r   r   _generate_converter_name   s   r%   Nc                 C   sD  g }| D ]}t |trO|jjj}|j}|j}|j}	t|j|||}
t |jt	r>t
d us-J t|j}t
|t|
|f||	}nt|t|
|f||	}|| q|jjjdd| }|j}|j}	|j}|sl|| t |jt	rt
d usxJ |d us~J t|jdd| }t
|||	|}nt|||	|}|| q|S )N$r   )
isinstancer   patternr   	namespaceapp_namedefault_kwargsapply_suffix_patternsurl_patternsr   r   strr   r   appendrstripcallbackdefault_argsname)urlpatternsr   suffix_requiredsuffix_routeret
urlpatternr   r)   r*   kwargspatternsroutenew_patternviewr3   r   r   r   r,   %   s@   



r,   Fc           	      C   s   t j}|rt|dkr|d }ndd| }d||f }nd| }t|}|t vr4t|}t|| d||f }t| |||S )a  
    Supplement existing urlpatterns with corresponding patterns that also
    include a '.format' suffix.  Retains urlpattern ordering.

    urlpatterns:
        A list of URL patterns.

    suffix_required:
        If `True`, only suffixed URLs will be generated, and non-suffixed
        URLs will not be used.  Defaults to `False`.

    allowed:
        An optional tuple/list of allowed suffixes.  eg ['json', 'api']
        Defaults to `None`, which allows any suffix.
    r
   r   z(%s)r   z\.(?P<%s>%s)/?$z\.(?P<%s>[a-z0-9]+)/?$z<%s:%s>)	r	   FORMAT_SUFFIX_KWARGr   r   r%   r   r!   r   r,   )	r4   r5   r   suffix_kwargr    r   r$   suffix_converterr6   r   r   r   format_suffix_patternsU   s   


rA   )N)FN)django.urlsr   r   r   r   r   django.urls.convertersr   django.urls.resolversr   rest_framework.settingsr	   r!   r%   r,   rA   r   r   r   r   <module>   s    
0