HEX
Server: Apache
System: Linux pdx1-shared-a1-29 6.18.39-grsec-noble+ #4 SMP Thu Jul 23 07:53:29 UTC 2026 x86_64
User: dh_bj99yp (22285841)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/docutils/transforms/__pycache__/universal.cpython-312.pyc
�

ohe+2���dZdZddlZddlZddlZddlmZmZddlm	Z	ddl
mZGd�de	�ZGd	�d
e	�Z
Gd�de	�ZGd
�de	�ZGd�de	�ZGd�de	�ZGd�de	�ZGd�de	�Zy)a�
Transforms needed by most or all documents:

- `Decorations`: Generate a document's header & footer.
- `ExposeInternals`: Expose internal attributes.
- `Messages`: Placement of system messages generated after parsing.
- `FilterMessages`: Remove system messages below verbosity threshold.
- `TestMessages`: Like `Messages`, used on test runs.
- `StripComments`: Remove comment elements from the document tree.
- `StripClassesAndElements`: Remove elements with classes
  in `self.document.settings.strip_elements_with_classes`
  and class values in `self.document.settings.strip_classes`.
- `SmartQuotes`: Replace ASCII quotation marks with typographic form.
�reStructuredText�N)�nodes�utils)�	Transform)�smartquotesc�&�eZdZdZdZd�Zd�Zd�Zy)�DecorationszD
    Populate a document's decoration element (header, footer).
    i4c�:�|j�}|r;|jj�}|j�}|j	|�|j�}|r<|jj�}|j
�}|j	|�yy�N)�generate_header�document�get_decoration�
get_header�extend�generate_footer�
get_footer)�self�header_nodes�
decoration�header�footer_nodes�footers      �?/usr/lib/python3/dist-packages/docutils/transforms/universal.py�applyzDecorations.apply's����+�+�-������5�5�7�J��*�*�,�F��M�M�,�'��+�+�-������5�5�7�J��*�*�,�F��M�M�,�'��c��yr�)rs rrzDecorations.generate_header3s��rc
��|jj}|js%|js|js
|j
�r
g}|jr|js|j
r|j
r
|j
}n*tj|j|j�}|jtjdd|��tjd�g�|jr�tjj!d�}|r=t#j$|jt#j&t)|���}n2t#j$|jt#j&��}|j+tjd|zdz��|jr{|jtjd�tjddd	��tjd
�tjddd��tjd
�g�tj,ddg|���gSy)N�zView document source)�refuriz.
�SOURCE_DATE_EPOCHzGenerated on: z
Generated by �Docutilsz https://docutils.sourceforge.io/z from rz(https://docutils.sourceforge.io/rst.htmlz	 source.
)r
�settings�	generator�	datestamp�source_link�
source_url�_sourcer�
relative_path�_destinationrr�	reference�Text�os�environ�get�time�strftime�gmtime�int�append�	paragraph)rr#�text�source�source_date_epochr%s      rrzDecorations.generate_footer6s����=�=�)�)�����(�"4�"4��#�#�x�':�':��D��$�$��)9�)9��&�&��&�&�%�0�0�F�"�0�0��1F�1F�19�1A�1A�C�F�����O�O�B�(>�+1�3��J�J�u�%�'�(��!�!�$&�J�J�N�N�3F�$G�!�$� $�
�
�h�.@�.@�.2�k�k�#�>O�:P�.Q�!S�I�!%�
�
�h�.@�.@�$�+�+�-� P�I����E�J�J�'7�)�'C�e�'K�L�M��!�!�����J�J��/��O�O�B�
�+M�O��J�J�x�(��O�O�B�(:�,/�0��J�J�|�,�.�/��O�O�B��2�T�2�3�3�rN)�__name__�
__module__�__qualname__�__doc__�default_priorityrrrrrrr	r	s�����
(��*rr	c� �eZdZdZdZd�Zd�Zy)�ExposeInternalszL
    Expose internal attributes if ``expose_internals`` setting is set.
    iHc�8�t|tj�Sr)�
isinstancerr,�r�nodes  r�not_TextzExposeInternals.not_Textks���d�E�J�J�/�/�/rc��|jjjrh|jj|j�D]?}|jjjD]}t||d�}|��||d|z<��Ayy)Nz	internal:)r
r#�expose_internals�findallrD�getattr)rrC�att�values    rrzExposeInternals.applyns~���=�=�!�!�2�2��
�
�-�-�d�m�m�<�
8���=�=�1�1�B�B�8�C�#�D�#�t�4�E��(�27��[�3�.�/�8�
8�3rN)r9r:r;r<r=rDrrrrr?r?cs�����0�8rr?c��eZdZdZdZd�Zy)�Messageszi
    Place any system messages generated after parsing into a dedicated section
    of the document.
    i\c�>�|jj}|D�cgc]}|jr�|��}}|rdtjdg��}|tj
dd�z
}||z
}g|jjdd|xj|z
c_yycc}w)N�system-messages)�classesrzDocutils System Messages)r
�transform_messages�parentr�section�title)r�messages�msg�loose_messagesrRs     rrzMessages.apply�s����=�=�3�3��)1�D�#����#�D��D���m�m�->�,?�@�G��u�{�{�2�'A�B�B�G��~�%�G�24�D�M�M�,�,�Q�/��M�M�W�$�M�
��Es
�B�BN�r9r:r;r<r=rrrrrLrLws���
��	%rrLc��eZdZdZdZd�Zy)�FilterMessagesz�
    Remove system messages below verbosity threshold.

    Convert <problematic> nodes referencing removed messages to <Text>.
    Remove "System Messages" section if empty.
    ifc�2�t|jjtj��D]b}|d|jj
jks�*|jj|�	|jj|dd=�dt|jjtj��D][}|d|jjvs�|jj|tj|j����]|jjtj�D]4}d|dvs�t!|�dk(s�|jj|��6y#t$rY��bwxYw)N�level�idsr�refidrNrO�)�tupler
rGr�system_message�reporter�report_levelrQ�remover\�
IndexError�problematic�replacer,�astextrR�lenrBs  rrzFilterMessages.apply�s>���$�-�-�/�/��0D�0D�E�F�	�D��G�}�t�}�}�5�5�B�B�B����"�"�4�(���
�
�)�)�$�u�+�a�.�9�		��$�-�-�/�/��0A�0A�B�C�	E�D��G�}�D�M�M�$5�$5�5����#�#�D�%�*�*�T�[�[�]�*C�D�	E��M�M�)�)�%�-�-�8�	)�D� �D��O�3��D�	�Q�����"�"�4�(�	)��#����s�9F	�		F�FNrWrrrrYrY�s�����
)rrYc��eZdZdZdZdZd�Zy)�TestMessageszk
    Append all post-parse system messages to the end of the document.

    Used for testing purposes.
    Fipc�~�|jjD]$}|jr�|xj|z
c_�&yr)r
rPrQ)rrUs  rrzTestMessages.apply�s0���=�=�3�3�	%�C��:�:��
�
��$�
�	%rN)r9r:r;r<�__test__r=rrrrrjrj�s����H���%rrjc��eZdZdZdZd�Zy)�
StripCommentszq
    Remove comment elements from the document tree (only if the
    ``strip_comments`` setting is enabled).
    i�c���|jjjrSt|jj	t
j��D]}|jj|��yyr)	r
r#�strip_commentsr_rGr�commentrQrcrBs  rrzStripComments.apply�sS���=�=�!�!�0�0��d�m�m�3�3�E�M�M�B�C�
)�����"�"�4�(�
)�1rNrWrrrrnrn�s���
��)rrnc� �eZdZdZdZd�Zd�Zy)�StripClassesAndElementsz�
    Remove from the document tree all elements with classes in
    `self.document.settings.strip_elements_with_classes` and all "classes"
    attribute values in `self.document.settings.strip_classes`.
    i�c�b�|jjjruh|jjj�|_t	|jj|j��D]}|jj|��|jjjsy|jjj}|jjtj�D]}|D]}	|dj|��� y#t$rY�(wxYw)NrO)
r
r#�strip_elements_with_classes�strip_elementsr_rG�
check_classesrQrc�
strip_classesr�Element�
ValueError)rrCrx�class_values    rrzStripClassesAndElements.apply�s����=�=�!�!�=�=�#A�D�M�M�$:�$:�$?�$?�#A�D���d�m�m�3�3�D�4F�4F�G�H�
)�����"�"�4�(�
)��}�}�%�%�3�3���
�
�.�.�<�<�
��M�M�)�)�%�-�-�8�	�D�,�
�����O�*�*�;�7�
�	��"����s�	D"�"	D.�-D.c�t�t|tj�sy|dddD]}||jvs�yy)NFrOT)rArryrv)rrCr{s   rrwz%StripClassesAndElements.check_classes�sA���$��
�
�.���	�?�1�-�	�K��d�1�1�1��	�rN)r9r:r;r<r=rrwrrrrsrs�s������&rrsc��eZdZdZdZejejfZ	ejejejejejejejfZ	dZ	d�Zd�Zd�Zy)�SmartQuotesz�
    Replace ASCII quotation marks with typographic form.

    Also replace multiple dashes with em-dash/en-dash characters.
    iW�qDec�R�tj|||��t�|_y)N)�	startnode)r�__init__�set�unsupported_languages)rr
r�s   rr�zSmartQuotes.__init__s�����4��Y�?�%(�U��"rc#�K�|D]�}t|j|j�s*t|jj|j�rdt|�f���]t	j
ddt|��}d|f����y�w)N�literalz(?<=)([-\'".`])z\\\1�plain)rArQ�
literal_nodes�str�re�sub)r�txtnodesrC�txts    r�
get_tokenszSmartQuotes.get_tokenssw�����	#�D��4�;�;��(:�(:�;��d�k�k�0�0�$�2D�2D�E���T��*�*��f�f�4�g�s�4�y�I���s�l�"�	#�s�B	Bc��|jjjdd�}|sy	|jd�}|jjj
}|jjj}|r2tjjjt|��|jjtj�D�]�}t||j �r�t|j"tj�r�@|jtj$�D�cgc](}t|j"tj&�s|��*}}|j)|�}|rd|vr|j+dd�}n|dz
}t-j.|�D]"}	|	tjjvs� |	}nV||j0vr*|jj2j5d|z|��|j0j7|�d}tj8|j;|�|j<|��}
t?||
�D]4\}}|j"j+|tj$|���6���|j0jA�y#t$rd}Y���wxYwcc}w)	N�smart_quotesF�altz
-x-altquotrz*No smart quotes defined for language "%s".)�	base_node)�attr�language)!r
r#�
setdefault�
startswith�AttributeError�
language_code�smartquotes_localesr�
smartchars�quotes�update�dictrGr�TextElementrA�
nodes_to_skiprQr,�
option_string�get_language_coderfr�normalize_language_tagr�ra�warning�add�educate_tokensr��smartquotes_action�zip�clear)rr��alternative�document_language�lc_smartquotesrC�txtnoder��lang�tag�teacher�newtexts            rrzSmartQuotes.applys{���}�}�-�-�8�8��9>�@����	 �&�1�1�%�8�K�!�M�M�2�2�@�@�����/�/�C�C����"�"�)�)�0�0��n�1E�F��M�M�)�)�%�*;�*;�<�)	E�D��$�� 2� 2�3���$�+�+�u�'8�'8�9��04�|�|�E�J�J�/G�@�G�)�'�.�.�*/�*=�*=� ?� �@�H�@�
�)�)�*;�<�D���4�'��<�<��b�9�D��L�(�D��3�3�D�9�

���+�0�0�7�7�7��D��

�
�t�9�9�9��M�M�*�*�2�2�D�t�K�"&�3�(��*�*�.�.�t�4���"�0�0�����)��,�,�t�=�G�%(��'�$:�
E� ������&�&�w��
�
�7�0C�D�
E�Q)	E�V	
�"�"�(�(�*��k�	 ��K�	 ��&@s�J9�:-K�9K�KN)r9r:r;r<r=r�FixedTextElement�Specialr��imager��math�rawrer�r�r�r�rrrrr~r~�s~������+�+�U�]�]�;�M�M��+�+�U�]�]��[�[�%�-�-�����Y�Y�� 1� 1�3�M�G����+�#�<+rr~)r<�
__docformat__r-r�r0�docutilsrr�docutils.transformsr�docutils.utilsrr	r?rLrYrjrnrsr~rrr�<module>r�s���
�#�
�	�	��!�)�&�A�)�A�H8�i�8�(%�y�%�6)�Y�)�6%�9�%�&)�I�)�#�i�#�Lf+�)�f+r