ó
    …~iî(  ã                  ó†  • % S SK Jr  S SKJrJrJrJrJrJrJ	r	J
r
  S SKJr  S SKJr  \	(       a  S SKJr   " S S\5      r " S S	\5      r " S
 S\5      r\" \R(                  S9\R*                  S'   \" \R,                  SSS9\R*                  S'   \" \R(                  SSS9\R*                  S'   \" \R.                  S9\R*                  S'   \" SS9\R*                  S'   \" \R(                  S9\R*                  S'   \" \R.                  S9\R*                  S'   \" SS9\R*                  S'   \\/\4   rS\S'   \
\\4   rg)é    )Úannotations)ÚCallableÚDictÚIterableÚOptionalÚSetÚTupleÚTYPE_CHECKINGÚUnion)Ú	TypeAlias)ÚEntitySubstitution)Ú_AttributeValuec                  ó  • \ rS rSr% SrSrS\S'   SrS\S'   \" \	" SS	/5      S
9r
S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'           SS jr      S           S S jjrS!S jrS"S jr    S#S jrSrg)$Ú	Formatteré
   a  Describes a strategy to use when outputting a parse tree to a string.

Some parts of this strategy come from the distinction between
HTML4, HTML5, and XML. Others are configurable by the user.

Formatters are passed in as the `formatter` argument to methods
like `bs4.element.Tag.encode`. Most people won't need to
think about formatters, and most people who need to think about
them can pass in one of these predefined strings as `formatter`
rather than making a new Formatter object:

For HTML documents:
 * 'html' - HTML entity substitution for generic HTML documents. (default)
 * 'html5' - HTML entity substitution for HTML5 documents, as
             well as some optimizations in the way tags are rendered.
 * 'html5-4.12.0' - The version of the 'html5' formatter used prior to
                    Beautiful Soup 4.13.0.
 * 'minimal' - Only make the substitutions necessary to guarantee
               valid HTML.
 * None - Do not perform any substitution. This will be faster
          but may result in invalid markup.

For XML documents:
 * 'html' - Entity substitution for XHTML documents.
 * 'minimal' - Only make the substitutions necessary to guarantee
               valid XML. (default)
 * None - Do not perform any substitution. This will be faster
          but may result in invalid markup.

ÚhtmlÚstrÚHTMLÚxmlÚXMLÚscriptÚstyle)Úcdata_containing_tagszDict[str, Set[str]]ÚHTML_DEFAULTSúOptional[str]Úlanguageú%Optional[_EntitySubstitutionFunction]Úentity_substitutionÚvoid_element_close_prefixúSet[str]r   ÚindentÚboolÚempty_attributes_are_booleansc                ó\   • Ub  U$ XR                   :X  a
  [        5       $ U R                  U   $ )N)r   Úsetr   )Úselfr   ÚvalueÚkwargs       ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/bs4/formatter.pyÚ_defaultÚFormatter._defaultB   s5   € ð ÑØˆLØ—x‘xÓô “5ˆLð ×!Ñ! %Ñ(Ð(ó    Nc                ó0  • U=(       d    U R                   U l        X l        X0l        U R	                  U R                  US5      U l        XPl        Uc  Sn[        U[        5      (       a  US:  a  SnSU-  nO[        U[        5      (       a  UnOSnXpl
        g)aë  Constructor.

:param language: This should be `Formatter.XML` if you are formatting
   XML markup and `Formatter.HTML` if you are formatting HTML markup.

:param entity_substitution: A function to call to replace special
   characters with XML/HTML entities. For examples, see
   bs4.dammit.EntitySubstitution.substitute_html and substitute_xml.
:param void_element_close_prefix: By default, void elements
   are represented as <tag/> (XML rules) rather than <tag>
   (HTML rules). To get <tag>, pass in the empty string.
:param cdata_containing_tags: The set of tags that are defined
   as containing CDATA in this dialect. For example, in HTML,
   <script> and <style> tags are defined as containing CDATA,
   and their contents should not be formatted.
:param empty_attributes_are_booleans: If this is set to true,
  then attributes whose values are sent to the empty string
  will be treated as `HTML boolean
  attributes<https://dev.w3.org/html5/spec-LC/common-microsyntaxes.html#boolean-attributes>`_. (Attributes
  whose value is None are always rendered this way.)
:param indent: If indent is a non-negative integer or string,
    then the contents of elements will be indented
    appropriately when pretty-printing. An indent level of 0,
    negative, or "" will only insert newlines. Using a
    positive integer indent indents that many spaces per
    level. If indent is a string (such as "\t"), that string
    is used to indent each level. The default behavior is to
    indent one space per level.

r   Nr   Ú )r   r   r   r   r*   r   r#   Ú
isinstanceÚintr   r!   )r&   r   r   r   r   r#   r!   Ú
indent_strs           r)   Ú__init__ÚFormatter.__init__O   s�   € ðN !×- D§I¡IˆŒØ#6Ô Ø)BÔ&Ø%)§]¡]Ø�M‰MÐ0Ð2Ió&
ˆÔ"ð .KÔ*Ø‰>ØˆFä�fœc×"Ñ"Ø˜‹zØ�Ø˜v™‰JÜ˜¤×$Ñ$Ø‰JàˆJØ �r,   c                óÜ   • U R                   (       d  U$ SSKJn  [        X5      (       a3  UR                  b&  UR                  R
                  U R                  ;   a  U$ U R                  U5      $ )zôProcess a string that needs to undergo entity substitution.
This may be a string encountered in an attribute value or as
text.

:param ns: A string.
:return: The same string but with certain characters replaced by named
   or numeric entities.
é   )ÚNavigableString)r   Úelementr6   r/   ÚparentÚnamer   )r&   Únsr6   s      r)   Ú
substituteÚFormatter.substituteŠ   sZ   € ð ×'×'ØˆIÝ,ô �r×+Ñ+Ø—	‘	Ñ%Ø—	‘	—‘ $×"<Ñ"<Ó<ð ˆIà×'Ñ'¨Ó+Ð+r,   c                ó$   • U R                  U5      $ )z�Process the value of an attribute.

:param ns: A string.
:return: A string with certain characters replaced by named
   or numeric entities.
)r;   )r&   r'   s     r)   Úattribute_valueÚFormatter.attribute_value¡   s   € ð �‰˜uÓ%Ð%r,   c                ó’   ^ • UR                   c  / $ [        UR                   R                  5       5      n[        U 4S jU 5       5      $ )ax  Reorder a tag's attributes however you want.

By default, attributes are sorted alphabetically. This makes
behavior consistent between Python 2 and Python 3, and preserves
backwards compatibility with older versions of Beautiful Soup.

If `empty_attributes_are_booleans` is True, then
attributes whose values are set to the empty string will be
treated as boolean attributes.
c              3  ób   >#   • U  H$  u  pUTR                   (       a  US :X  a  SOU4v •  M&     g7f)Ú N)r#   )Ú.0ÚkÚvr&   s      €r)   Ú	<genexpr>Ú'Formatter.attributes.<locals>.<genexpr>»   s/   øé € ð 
â‘�ð ˜×;×;ÀÀRÃ‘ÈQÕPÚùs   ƒ,/)ÚattrsÚlistÚitemsÚsorted)r&   ÚtagrJ   s   `  r)   Ú
attributesÚFormatter.attributesª   sC   ø€ ð �9‰9ÑØˆIä7;¸C¿I¹I¿O¹OÓ<MÓ7NˆÜô 
áó
ó 
ð 	
r,   )r   r#   r   r!   r   r   )r   r   r'   úOptional[Set[str]]r(   r   Úreturnr    )NNÚ/NFr5   )r   r   r   r   r   r   r   rO   r#   r"   r!   úUnion[int, str])r:   r   rP   r   )r'   r   rP   r   )rL   zbs4.element.TagrP   z/Iterable[Tuple[str, Optional[_AttributeValue]]])Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__annotations__r   Údictr%   r   r*   r2   r;   r>   rM   Ú__static_attributes__© r,   r)   r   r   
   s  ‡ ñð@ €Dˆ#Óð €CˆÓñ *.Ù! 8¨WÐ"5Ó6ñ*€MÐ&ó ð ÓØ>Ó>Ø"Ó"Ø#Ó#ØƒKð $(Ó'ð)Øð)Ø$6ð)Ø?Bð)à	ô)ð #'ØEIØ),Ø48Ø.3Ø!"ð9!àð9!ð Cð9!ð $'ð	9!ð
  2ð9!ð (,ð9!ð õ9!ôv,ô.&ð
Ø"ð
à	8÷
r,   r   c                  ó`   ^ • \ rS rSr% Sr0 rS\S'        S         SU 4S jjjrSrU =r	$ )	ÚHTMLFormatteréÁ   zA generic Formatter for HTML.z"Dict[Optional[str], HTMLFormatter]ÚREGISTRYc           	     óF   >• [         [        U ]  U R                  UUUUUS9  g ©N)r!   )Úsuperr]   r2   r   ©r&   r   r   r   r#   r!   Ú	__class__s         €r)   r2   ÚHTMLFormatter.__init__Æ   s/   ø€ ô 	Œm˜TÑ+Ø�I‰IØØ%Ø!Ø)Øð 	,ò 	
r,   r[   ©NrQ   NFr5   ©
r   r   r   r   r   rO   r#   r"   r!   rR   ©
rS   rT   rU   rV   rW   r_   rX   r2   rZ   Ú__classcell__©rd   s   @r)   r]   r]   Á   s^   ø‡ Ù'à35€HÐ0Ó5ð FJØ),Ø48Ø.3Ø!"ð
àBð
ð $'ð
ð  2ð	
ð
 (,ð
ð ÷
ö 
r,   r]   c                  ó`   ^ • \ rS rSr% Sr0 rS\S'        S         SU 4S jjjrSrU =r	$ )	ÚXMLFormatteréØ   zA generic Formatter for XML.z!Dict[Optional[str], XMLFormatter]r_   c           	     óF   >• [         [        U ]  U R                  UUUUUS9  g ra   )rb   rl   r2   r   rc   s         €r)   r2   ÚXMLFormatter.__init__Ý   s/   ø€ ô 	Œl˜DÑ*Ø�H‰HØØ%Ø!Ø)Øð 	+ò 	
r,   r[   rf   rg   rh   rj   s   @r)   rl   rl   Ø   s^   ø‡ Ù&à24€HÐ/Ó4ð FJØ),Ø48Ø.3Ø!"ð
àBð
ð $'ð
ð  2ð	
ð
 (,ð
ð ÷
ö 
r,   rl   )r   r   rB   T)r   r   r#   Úhtml5z
html5-4.12ÚminimalNr   Ú_EntitySubstitutionFunction)Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   Útyping_extensionsr   Ú
bs4.dammitr   Úbs4._typingr   r   r]   rl   Úsubstitute_htmlr_   Úsubstitute_html5Úsubstitute_xmlr   rr   rX   Ú_FormatterOrNamer[   r,   r)   Ú<module>r|      sf  ðÞ "ß W× WÓ WÝ 'Ý )æÝ+ôt
Ð"ô t
ôn
�Iô 
ô.
�9ô 
ñ0 "/Ø*×:Ñ:ñ"€× Ñ �vÑ ñ #0Ø*×;Ñ;Ø Ø"&ñ#€× Ñ �wÑ ñ
 (5Ø*×:Ñ:Ø Ø"&ñ(€× Ñ �|Ñ $ñ
 %2Ø*×9Ñ9ñ%€× Ñ �yÑ !ñ  -ÀÑF€× Ñ �tÑ Ù ,Ø*×:Ñ:ñ!€× Ñ �fÑ ñ $0Ø*×9Ñ9ñ$€× Ñ �iÑ  ñ +¸tÑD€× Ñ �dÑ ð *2°3°%¸°*Ñ)=Ð ˜YÓ =ð ˜ C˜Ñ(Ñ r,   