o
    Ø"7h1  ã                   @   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   úo/var/www/epreuve.sigeris.cm/public_html/epreuve/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	ƒr“t
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