§
    _}dgÇ  ã                   ót   — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 d„ Z
d„ Zd	„ Zd
„ Z G d„ d¦  «        ZdS )zP
Utility functions to return a formatted name and description for a given view.
é    N)Ú	force_str)Úescape)Ú	mark_safe)Úapply_markdownc                 ól   — |                       |¦  «        r| |k    r| dt          |¦  «         …         S | S )z|
    Strip trailing component `trailing` from `content` if it exists.
    Used when generating names from view classes.
    N)ÚendswithÚlen)ÚcontentÚtrailings     ú^/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/rest_framework/utils/formatting.pyÚremove_trailing_stringr      s@   € ð
 ×Ò˜Ñ!Ô!ð ( g°Ò&9Ð&9Ø��˜X™œ˜�Ô'Ð'Ø€Nó    c                 óò  — t          | ¦  «        } d„ |                      ¦   «         dd…         D ¦   «         }|r­t          d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }|r<dd|z  z   }t          j        t          j        |t          j        ¦  «        d| ¦  «        } n=|r;dd	|z  z   }t          j        t          j        |t          j        ¦  «        d| ¦  «        } |                      ¦   «         S )
a  
    Remove leading indent from a block of text.
    Used when generating descriptions from docstrings.

    Note that python's `textwrap.dedent` doesn't quite cut it,
    as it fails to dedent multiline docstrings that include
    unindented text on the initial line.
    c                 ó:   — g | ]}|                      ¦   «         ¯|‘ŒS © )Úlstrip©Ú.0Úlines     r   ú
<listcomp>zdedent.<locals>.<listcomp>!   s%   € ÐHÐHÐH�d¸$¿+º+¹-¼-ÐHˆTÐHÐHÐHr   é   Nc                 ór   — g | ]4}t          |¦  «        t          |                     d ¦  «        ¦  «        z
  ‘Œ5S )ú ©r	   r   r   s     r   r   zdedent.<locals>.<listcomp>%   s7   € Ð UÐ UÐ UÀt¥ T¡¤­S°·²¸SÑ1AÔ1AÑ-BÔ-BÑ!BÐ UÐ UÐ Ur   c                 ór   — g | ]4}t          |¦  «        t          |                     d ¦  «        ¦  «        z
  ‘Œ5S )ú	r   r   s     r   r   zdedent.<locals>.<listcomp>&   s7   € ÐOÐOÐOÀ�#˜d™)œ)¥c¨$¯+ª+°dÑ*;Ô*;Ñ&<Ô&<Ñ<ÐOÐOÐOr   ú^r   Ú r   )r   Ú
splitlinesÚminÚreÚsubÚcompileÚ	MULTILINEÚstrip)r
   ÚlinesÚwhitespace_countsÚ
tab_countsÚwhitespace_patterns        r   Údedentr*      s  € õ ˜Ñ Ô €GØHÐH˜g×0Ò0Ñ2Ô2°1°2°2Ô6ÐHÑHÔH€Eð ð XÝÐ UÐ UÈuÐ UÑ UÔ UÑVÔVÐÝÐOÐOÈÐOÑOÔOÑPÔPˆ
Øð 	XØ!$¨Ð.?Ñ(?Ñ!@ÐÝ”f�RœZÐ(:½B¼LÑIÔIÈ2ÈwÑWÔWˆGˆGØð 	XØ!$¨¨zÑ(9Ñ!:ÐÝ”f�RœZÐ(:½B¼LÑIÔIÈ2ÈwÑWÔWˆGØ�=Š=‰?Œ?Ðr   c                 óÊ   — d}t          j        |d| ¦  «                             ¦   «         } d                     |                      d¦  «        ¦  «                             ¦   «         S )zm
    Translate 'CamelCaseNames' to 'Camel Case Names'.
    Used when generating names from view classes.
    z&(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))z \1r   Ú_)r!   r"   r%   ÚjoinÚsplitÚtitle)r
   Úcamelcase_boundarys     r   Úcamelcase_to_spacesr1   0   sU   € ð
 BÐÝŒfÐ'¨°Ñ9Ô9×?Ò?ÑAÔA€GØ�8Š8�G—M’M #Ñ&Ô&Ñ'Ô'×-Ò-Ñ/Ô/Ð/r   c                 ó¤   — t           rt          | ¦  «        } n+t          | ¦  «                             dd¦  «        } d| z   dz   } t          | ¦  «        S )z5
    Apply HTML markup to the given description.
    ú
z<br />z<p>z</p>)r   r   Úreplacer   )Údescriptions    r   Úmarkup_descriptionr6   :   sU   € õ ð 3Ý$ [Ñ1Ô1ˆˆå˜[Ñ)Ô)×1Ò1°$¸ÑAÔAˆØ˜kÑ)¨FÑ2ˆÝ�[Ñ!Ô!Ð!r   c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )Úlazy_formatz¯
    Delay formatting until it's actually needed.

    Useful when the format string or one of the arguments is lazy.

    Not using Django's lazy because it is too slow.
    )Úformat_stringÚargsÚkwargsÚresultc                 ó>   — d | _         || _        || _        || _        d S ©N)r<   r9   r:   r;   )Úselfr9   r:   r;   s       r   Ú__init__zlazy_format.__init__P   s#   € ØˆŒØ*ˆÔØˆŒ	ØˆŒˆˆr   c                 óŠ   — | j         €6 | j        j        | j        i | j        ¤Ž| _         d\  | _        | _        | _        | j         S )N)NNN)r<   r9   Úformatr:   r;   )r?   s    r   Ú__str__zlazy_format.__str__V   sE   € ØŒ;ÐØ3˜$Ô,Ô3°T´YÐNÀ$Ä+ÐNÐNˆDŒKØ9IÑ6ˆDÔ ¤	¨4¬;ØŒ{Ðr   c                 ó&   — t          | ¦  «        |z  S r>   )Ústr)r?   Úvalues     r   Ú__mod__zlazy_format.__mod__\   s   € Ý�4‰yŒy˜5Ñ Ð r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r@   rC   rG   r   r   r   r8   r8   F   sR   € € € € € ðð ð >€Iðð ð ðð ð ð!ð !ð !ð !ð !r   r8   )rK   r!   Údjango.utils.encodingr   Údjango.utils.htmlr   Údjango.utils.safestringr   Úrest_framework.compatr   r   r*   r1   r6   r8   r   r   r   ú<module>rQ      sÐ   ððð ð 
€	€	€	à +Ð +Ð +Ð +Ð +Ð +Ø $Ð $Ð $Ð $Ð $Ð $Ø -Ð -Ð -Ð -Ð -Ð -à 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ðð ð ð20ð 0ð 0ð	"ð 	"ð 	"ð!ð !ð !ð !ð !ñ !ô !ð !ð !ð !r   