AnonSec Shell
Server IP : 209.38.156.173  /  Your IP : 216.73.216.122   [ Reverse IP ]
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux lakekumayuhotel 5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025 x86_64
User : root ( 0)
PHP Version : 8.1.2-1ubuntu2.22
Disable Function : NONE
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/babel/messages/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /lib/python3/dist-packages/babel/messages/__pycache__/pofile.cpython-310.pyc
o

��
^hU�@s�dZddlmZddlZddlZddlmZmZddlm	Z	ddl
mZmZdd�Z
d	d
�ZGdd�de�ZGd
d�de�ZGdd�de�Zd dd�Ze�d�Zdd�Zd!dd�Z			d"dd�Zdd�ZdS)#z�
    babel.messages.pofile
    ~~~~~~~~~~~~~~~~~~~~~

    Reading and writing of files in the ``gettext`` PO (portable object)
    format.

    :copyright: (c) 2013-2019 by the Babel Team.
    :license: BSD, see LICENSE for more details.
�)�print_functionN)�Catalog�Message)�wraptext)�	text_type�cmpcCs"dd�}t�d��||dd��S)z�Reverse `escape` the given string.

    >>> print(unescape('"Say:\\n  \\"hello, world!\\"\\n"'))
    Say:
      "hello, world!"
    <BLANKLINE>

    :param string: the string to unescape
    cSs2|�d�}|dkrdS|dkrdS|dkrdS|S)N��n�
�t�	�r�
)�group)�match�m�r�7/usr/lib/python3/dist-packages/babel/messages/pofile.py�replace_escapes s
z!unescape.<locals>.replace_escapesz\\([\\trn"])r���)�re�compile�sub)�stringrrrr�unescapes

rcCsBd|vr|��}|�d�r|dd�}tt|�}d�|�St|�S)a�Reverse the normalization done by the `normalize` function.

    >>> print(denormalize(r'''""
    ... "Say:\n"
    ... "  \"hello, world!\"\n"'''))
    Say:
      "hello, world!"
    <BLANKLINE>

    >>> print(denormalize(r'''""
    ... "Say:\n"
    ... "  \"Lorem ipsum dolor sit "
    ... "amet, consectetur adipisicing"
    ... " elit, \"\n"'''))
    Say:
      "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
    <BLANKLINE>

    :param string: the string to denormalize
    r
�""rN�)�
splitlines�
startswith�mapr�join)r�
escaped_lines�linesrrr�denormalize-s


r#cs eZdZdZ�fdd�Z�ZS)�PoFileErrorzDException thrown by PoParser when an invalid po file is encountered.cs0tt|��dj||d��||_||_||_dS)Nz{message} on {lineno})�message�lineno)�superr$�__init__�format�catalog�liner&)�selfr%r*r+r&��	__class__rrr(Ns
zPoFileError.__init__)�__name__�
__module__�__qualname__�__doc__r(�
__classcell__rrr-rr$Lsr$c@speZdZdd�Zdd�Zdd�Zdd�ZeZd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�_NormalizedStringcGsg|_|D]}|�|�qdS�N)�_strs�append)r,�args�argrrrr(Ws�z_NormalizedString.__init__cCs|j�|���dSr5)r6r7�strip)r,�srrrr7\sz_NormalizedString.appendcCsd�tt|j��S)Nr)r rrr6�r,rrrr#_sz_NormalizedString.denormalizecCs
t|j�Sr5)�boolr6r<rrr�__nonzero__bs
z_NormalizedString.__nonzero__cCstj�|j�Sr5)�os�linesepr r6r<rrr�__repr__g�z_NormalizedString.__repr__cCs|sdStt|�t|��S)Nr)rr�r,�otherrrr�__cmp__jsz_NormalizedString.__cmp__cCs|�|�dkS�Nr�rErCrrr�__gt__prBz_NormalizedString.__gt__cCs|�|�dkSrFrGrCrrr�__lt__srBz_NormalizedString.__lt__cCs|�|�dkSrFrGrCrrr�__ge__vrBz_NormalizedString.__ge__cCs|�|�dkSrFrGrCrrr�__le__yrBz_NormalizedString.__le__cCs|�|�dkSrFrGrCrrr�__eq__|rBz_NormalizedString.__eq__cCs|�|�dkSrFrGrCrrr�__ne__rBz_NormalizedString.__ne__N)r/r0r1r(r7r#r>�__bool__rArErHrIrJrKrLrMrrrrr4Usr4c@sneZdZdZgd�Zddd�Zdd�Zdd	�Zd
d�Zddd
�Z	ddd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�PoFileParserz�Support class to  read messages from a ``gettext`` PO (portable object) file
    and add them to a `Catalog`

    See `read_po` for simple cases.
    )�msgid�msgstr�msgctxt�msgid_pluralFcCs*||_||_d|_d|_||_|��dSrF)r*�ignore_obsolete�counter�offset�
abort_invalid�_reset_message_state)r,r*rTrWrrrr(�szPoFileParser.__init__cCsFg|_g|_g|_g|_g|_g|_d|_d|_d|_d|_	d|_
dS)NF)�messages�translations�	locations�flags�
user_comments�
auto_comments�context�obsolete�in_msgid�	in_msgstr�
in_msgctxtr<rrrrX�s
z!PoFileParser._reset_message_statec
Cs8|j��t|j�dkrtdd�|jD��}n|jd��}t|ttf�rRdd�t|j	j
�D�}|jD]\}}||j	j
krF|�d|jd�q3|��||<q3t|�}n	|jdd��}|j
rd|j
��}nd}t||t|j�t|j�|j|j|jd|d	�}|jr�|js�||j	j|<n||j	|<|jd7_|��dS)
z�
        Add a message to the catalog based on the current parser state and
        clear the state ready to process the next message.
        rcSsg|]}|���qSr)r#)�.0rrrr�
<listcomp>�sz-PoFileParser._add_message.<locals>.<listcomp>rcSsg|]}d�qS�rr)rd�_rrrre�srz5msg has more translations than num_plurals of catalogN)r&r_)rZ�sort�lenrY�tupler#�
isinstance�list�ranger*�num_plurals�_invalid_pofilerVr_rr[�setr\r^r]r`rTrUrX)r,rPr�idx�translationrRr%rrr�_add_message�s6

��
zPoFileParser._add_messagecCs|jr	|��dSdSr5)rYrsr<rrr�_finish_current_message�s�z$PoFileParser._finish_current_messagecCs,|�d�r
|�||�dS|�|||�dS)N�")r�!_process_string_continuation_line�_process_keyword_line)r,r&r+r`rrr�_process_message_line�s
z"PoFileParser._process_message_linec	CsH|jD],}z|�|�r|t|�dvr|t|�d�}WnWqty/|�||d�Yqw|�||d�dS|dvrA|��||_|dkrK||_|dvr_d|_d|_	|j
�t|��dS|d	kr�d|_	d|_
|�d
�r�|dd��dd�\}}|j�t|�t|�g�dS|j�d
t|�g�dS|dkr�d|_t|�|_dSdS)N)� �[z$Keyword must be followed by a stringz0Start of line didn't match any expected keyword.)rPrRrP)rPrSFTrQrzr�]rrR)�	_keywordsrri�
IndexErrorrortr`rVrcrarYr7r4rb�splitrZ�intr_)r,r&r+r`�keywordr9rq�msgrrrrw�s>
��
�z"PoFileParser._process_keyword_linecCsV|jr	|jd}n|jr|jdd}n|jr|j}n	|�||d�dS|�|�dS)Nrrz<Got line starting with " but not in msgid, msgstr or msgctxt)rarYrbrZrcr_ror7)r,r+r&r;rrrrv�sz.PoFileParser._process_string_continuation_linec	Cs8|��|dd��d�rP|dd�����D]6}|�d�}|dkrEzt||dd��}Wn	ty7Yqw|j�|d|�|f�q|j�|df�qdS|dd��d�rq|dd����d�D]
}|j	�|�
��qddS|dd��d�r�|dd��
�}|r�|j�|�dSdS|j�|dd��
��dS)Nr�:�r�,�.)
rtr�lstripr~�rfindr�
ValueErrorr[r7r\r:r^r])r,r+�location�posr&�flag�commentrrr�_process_comment	s.
��
��zPoFileParser._process_commentcCs�t|�D]@\}}|��}t|t�s|�|jj�}|sq|�d�r>|dd��d�r8|j||dd��	�dd�q|�
|�q|�||�q|��|jsm|j
sU|jsU|jro|j�td��|j�d	td�g�|��dSdSdS)
z�
        Reads from the file-like object `fileobj` and adds any po file
        units found in it to the `Catalog` supplied to the constructor.
        �#rN�~r�T)r`rr)�	enumerater:rkr�decoder*�charsetrrxr�r�rtrUr\r]r^rYr7r4rZrs)r,�fileobjr&r+rrr�parse$s"

�zPoFileParser.parsecCs8|jrt||j||��td|�td�|d|��dS)NzWARNING:z!WARNING: Problem on line {0}: {1}r)rWr$r*�printr))r,r+r&r�rrrroAs
zPoFileParser._invalid_pofileN)FF)F)r/r0r1r2r|r(rXrsrtrxrwrvr�r�rorrrrrO�s

#

)rOFcCs*t|||d�}t|||d�}|�|�|S)a�Read messages from a ``gettext`` PO (portable object) file from the given
    file-like object and return a `Catalog`.

    >>> from datetime import datetime
    >>> from babel._compat import StringIO
    >>> buf = StringIO('''
    ... #: main.py:1
    ... #, fuzzy, python-format
    ... msgid "foo %(name)s"
    ... msgstr "quux %(name)s"
    ...
    ... # A user comment
    ... #. An auto comment
    ... #: main.py:3
    ... msgid "bar"
    ... msgid_plural "baz"
    ... msgstr[0] "bar"
    ... msgstr[1] "baaz"
    ... ''')
    >>> catalog = read_po(buf)
    >>> catalog.revision_date = datetime(2007, 4, 1)

    >>> for message in catalog:
    ...     if message.id:
    ...         print((message.id, message.string))
    ...         print(' ', (message.locations, sorted(list(message.flags))))
    ...         print(' ', (message.user_comments, message.auto_comments))
    (u'foo %(name)s', u'quux %(name)s')
      ([(u'main.py', 1)], [u'fuzzy', u'python-format'])
      ([], [])
    ((u'bar', u'baz'), (u'bar', u'baaz'))
      ([(u'main.py', 3)], [])
      ([u'A user comment'], [u'An auto comment'])

    .. versionadded:: 1.0
       Added support for explicit charset argument.

    :param fileobj: the file-like object to read the PO file from
    :param locale: the locale identifier or `Locale` object, or `None`
                   if the catalog is not bound to a locale (which basically
                   means it's a template)
    :param domain: the message domain
    :param ignore_obsolete: whether to ignore obsolete messages in the input
    :param charset: the character set of the catalog.
    :param abort_invalid: abort read if po file is invalid
    )�locale�domainr�)rW)rrOr�)r�r�r�rTr�rWr*�parserrrr�read_poHs/
r�zL(\s+|[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))cCs0d|�dd��dd��dd��dd	��d
d�S)z�Escape the given string so that it can be included in double-quoted
    strings in ``PO`` files.

    >>> escape('''Say:
    ...   "hello, world!"
    ... ''')
    '"Say:\\n  \\"hello, world!\\"\\n"'

    :param string: the string to escape
    z"%s"�\z\\rz\trz\rr
z\nruz\")�replace)rrrr�escape�s�r�r�Lc
s0|rj|dkrjt��}g}|�d�D]W}tt|��||krct�|�}|��|rbg}d}|rXtt|d��d|}	||	|krL|�|���||	7}n
|sU|�|���n|s.|�d�|��|s(q|�|�qn|�d�}t|�dkryt|�S|r�|ds�|d=|dd7<dd��fd	d
�|D��S)a�Convert a string into a format that is appropriate for .po files.

    >>> print(normalize('''Say:
    ...   "hello, world!"
    ... ''', width=None))
    ""
    "Say:\n"
    "  \"hello, world!\"\n"

    >>> print(normalize('''Say:
    ...   "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
    ... ''', width=32))
    ""
    "Say:\n"
    "  \"Lorem ipsum dolor sit "
    "amet, consectetur adipisicing"
    " elit, \"\n"

    :param string: the string to normalize
    :param prefix: a string that should be prepended to every line
    :param width: the maximum line width; use `None`, 0, or a negative number
                  to completely disable line wrapping
    rTr�rrrr
z""
csg|]}�t|��qSr)r�)rdr+��prefixrrre�sznormalize.<locals>.<listcomp>)	rirr��WORD_SEPr~�reverser7�popr )
rr��width�	prefixlenr"r+�chunks�buf�size�lrr�r�	normalize�s>

����
r�Tc
	sRd#�fdd�	���fdd��d#��fdd�	}
d#���fdd	�	}d
}|r&d}n|r*d}t�|d
�D]�}
|
js^|r8q0�j}�rX�dkrXg}|��D]}|t|�dd�7}qGd�|�}�|d�|
jD]}|
|�qa|
jD]}|
|dd�qk|s�g}zt|
j	dd�d�}Wnt
y�|
j	}Ynw|D]#\}}|r�|	r�|�d|�t
jd�|f�q�|�d|�t
jd��q�|
d�|�dd�|
jrшdd�dgt|
j���|
jr�|r�|
d�|
jd�dd�t|
j�d kr�|
d!�|
jd �dd�||
��d�q0|�s%t�j��|d
�D]}
|
jD]}|
|��q||
d"d��d��qd
Sd
S)$a�Write a ``gettext`` PO (portable object) template file for a given
    message catalog to the provided file-like object.

    >>> catalog = Catalog()
    >>> catalog.add(u'foo %(name)s', locations=[('main.py', 1)],
    ...             flags=('fuzzy',))
    <Message...>
    >>> catalog.add((u'bar', u'baz'), locations=[('main.py', 3)])
    <Message...>
    >>> from babel._compat import BytesIO
    >>> buf = BytesIO()
    >>> write_po(buf, catalog, omit_header=True)
    >>> print(buf.getvalue().decode("utf8"))
    #: main.py:1
    #, fuzzy, python-format
    msgid "foo %(name)s"
    msgstr ""
    <BLANKLINE>
    #: main.py:3
    msgid "bar"
    msgid_plural "baz"
    msgstr[0] ""
    msgstr[1] ""
    <BLANKLINE>
    <BLANKLINE>

    :param fileobj: the file-like object to write to
    :param catalog: the `Catalog` instance
    :param width: the maximum line width for the generated output; use `None`,
                  0, or a negative number to completely disable line wrapping
    :param no_location: do not emit a location comment for every message
    :param omit_header: do not include the ``msgid ""`` entry at the top of the
                        output
    :param sort_output: whether to sort the messages in the output by msgid
    :param sort_by_file: whether to sort the messages in the output by their
                         locations
    :param ignore_obsolete: whether to ignore obsolete messages and not include
                            them in the output; by default they are included as
                            comments
    :param include_previous: include the old msgid as a comment when
                             updating the catalog
    :param include_lineno: include line number in the location comment
    rcst||�d�S)N)r�r�)r�)�keyr�)r�rr�
_normalizerBzwrite_po.<locals>._normalizecs&t|t�r|��jd�}��|�dS)N�backslashreplace)rkr�encoder��write)�text)r*r�rr�_writes
zwrite_po.<locals>._writecs>�r	�dkr	�}nd}t||�D]}�d||��f�qdS)Nrr�z#%s %s
)rr:)r�r��_widthr+)r�r�rr�_write_comment	s�z write_po.<locals>._write_commentc	st|jttf�r\|jr�d|�|j|�f��d|�|jd|�f��d|�|jd|�f�t�j�D]!}z|j|}WntyLd}Ynw�d||�||�f�q8dS|jrk�d|�|j|�f��d|�|j|�f��d|�|jpd|�f�dS)	Nz
%smsgctxt %s
z%smsgid %s
rz%smsgid_plural %s
rrz%smsgstr[%d] %s
z%smsgstr %s
)	rk�idrlrjr_rmrnrr})r%r�rqr)r�r�r*rr�_write_messages6
���
��	
��z write_po.<locals>._write_messageNr%r�)�sort_byrz# )r��subsequent_indentr
r�r�cSs"|dt|dt�r|dpdfS)Nrrr)rkr)�xrrr�<lambda>Os"zwrite_po.<locals>.<lambda>�r�z%s:%d�/z%sryr�z#%s
z, zmsgid %s�|rzmsgid_plural %sz#~ rf)�_sort_messagesr��header_commentrrr r]r^�sortedr[�	TypeErrorr7r�r?�sepr\�previous_idrir`�values)r�r*r��no_location�omit_header�sort_output�sort_by_filerT�include_previous�include_linenor�r�r�r%�comment_headerr"r+r��locsr[�filenamer&r)r�r�r*r�r�r�write_po�s�.

�




�
�
���

�
�r�cCs8t|�}|dkr|��|S|dkr|jdd�d�|S)z�
    Sort the given message iterable by the given criteria.

    Always returns a list.

    :param messages: An iterable of Messages.
    :param sort_by: Sort by which criteria? Options are `message` and `location`.
    :return: list[Message]
    r%r�cSs|jSr5)r[)rrrrr��sz _sort_messages.<locals>.<lambda>r�)rlrh)rYr�rrrr�rs
�r�)NNFNF)rr�)r�FFFFFFT)r2�
__future__rr?r�babel.messages.catalogrr�
babel.utilr�
babel._compatrrrr#�	Exceptionr$�objectr4rOr�rr�r�r�r�r�rrrr�<module>s.	/
E
5
=
� 

Anon7 - 2022
AnonSec Team