HEX
Server: LiteSpeed
System: Linux standart9.isimtescil.net 3.10.0-962.3.2.lve1.5.26.7.el7.x86_64 #1 SMP Wed Oct 2 07:53:12 EDT 2019 x86_64
User: karalev (5310)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/babel/messages/__pycache__/mofile.cpython-37.pyc
B

�`$�@sRdZddlZddlZddlmZmZddlmZmZdZ	dZ
dd�Zdd
d�ZdS)
z�
    babel.messages.mofile
    ~~~~~~~~~~~~~~~~~~~~~

    Writing of files in the ``gettext`` MO (machine object) format.

    :copyright: (c) 2013-2021 by the Babel Team.
    :license: BSD, see LICENSE for more details.
�N)�Catalog�Message)�
range_type�
array_tobytesl�*l�$<csxt��i}t|dd�}|��}t|�}tj}|d|dd��d}|tkrj|d|dd��\}}}	}
d	}n4|tkr�|d
|dd��\}}}	}
d}ntdd|���x�t	d|�D�]�}||||	|	d
��\}
}||
}||||
|
d
��\}}||}||k�r$||k�r$|||�}|||�}ntdd|��|
dk�r�d}}xv|�
�D]j}|��}|�sb�qLd|k�r�|�dd�\}}|���
�}}|��||<n|�rL||d|7<�qLWd|k�r�|�d�\}}nd}d|k�r$|�d�}|�d�}�j�rD�fdd�|D�}�fdd�|D�}n �j�rD|��j�}|��j�}t|||d��|<|	d
7}	|
d
7}
q�W|���_�S)aaRead a binary MO file from the given file-like object and return a
    corresponding `Catalog` object.

    :param fileobj: the file-like object to read the MO file from

    :note: The implementation of this function is heavily based on the
           ``GNUTranslations._parse`` method of the ``gettext`` module in the
           standard library.
    �name�z<IN�rz<4I�z<IIz>4Iz>IIzBad magic number�zFile is corrupt�:��
��csg|]}|��j��qS�)�decode�charset)�.0�x)�catalogr�F/opt/alt/python37/lib/python3.7/site-packages/babel/messages/mofile.py�
<listcomp>[szread_mo.<locals>.<listcomp>csg|]}|��j��qSr)rr)rr)rrrr\s)�context)r�getattr�read�len�struct�unpack�LE_MAGIC�BE_MAGIC�IOErrorr�
splitlines�strip�split�lowerrrr�itemsZmime_headers)�fileobjZheaders�filenameZbufZbuflenr�magic�versionZmsgcountZorigidxZtransidxZii�iZmlenZmoffZmendZtlenZtoffZtend�msgZtmsgZlastkey�key�item�valueZctxtr)rr�read_mosh







r/Fcs�t��}�fdd�|dd�D�|dd�<|��d}}g}�x|D]�}|jr�d��fdd�|jD��}g}	x@t|j�D]2\}
}|s�|	�|jtt	|
�d��qz|	�|�qzWd��fdd�|	D��}n|j�
�j�}|j�
�j�}|j�rd	�|j�
�j�|g�}|�t
|�t
|�t
|�t
|�f�||d7}||d7}qFWd
dt
|�}
|
t
|�}g}g}x6|D].\}}}}||||
g7}||||g7}�qnW||}|�t�dtd
t
|�d
d
t
|�dd
d
�tt�d|��||�dS)a�Write a catalog to the specified file-like object using the GNU MO file
    format.

    >>> import sys
    >>> from babel.messages import Catalog
    >>> from gettext import GNUTranslations
    >>> from babel._compat import BytesIO

    >>> catalog = Catalog(locale='en_US')
    >>> catalog.add('foo', 'Voh')
    <Message ...>
    >>> catalog.add((u'bar', u'baz'), (u'Bahr', u'Batz'))
    <Message ...>
    >>> catalog.add('fuz', 'Futz', flags=['fuzzy'])
    <Message ...>
    >>> catalog.add('Fizz', '')
    <Message ...>
    >>> catalog.add(('Fuzz', 'Fuzzes'), ('', ''))
    <Message ...>
    >>> buf = BytesIO()

    >>> write_mo(buf, catalog)
    >>> x = buf.seek(0)
    >>> translations = GNUTranslations(fp=buf)
    >>> if sys.version_info[0] >= 3:
    ...     translations.ugettext = translations.gettext
    ...     translations.ungettext = translations.ngettext
    >>> translations.ugettext('foo')
    u'Voh'
    >>> translations.ungettext('bar', 'baz', 1)
    u'Bahr'
    >>> translations.ungettext('bar', 'baz', 2)
    u'Batz'
    >>> translations.ugettext('fuz')
    u'fuz'
    >>> translations.ugettext('Fizz')
    u'Fizz'
    >>> translations.ugettext('Fuzz')
    u'Fuzz'
    >>> translations.ugettext('Fuzzes')
    u'Fuzzes'

    :param fileobj: the file-like object to write to
    :param catalog: the `Catalog` instance
    :param use_fuzzy: whether translations marked as "fuzzy" should be included
                      in the output
    cs g|]}|jr�s|js|�qSr)�stringZfuzzy)r�m)�	use_fuzzyrrr�szwrite_mo.<locals>.<listcomp>rN�rcsg|]}|��j��qSr)�encoder)r�msgid)rrrr�scsg|]}|��j��qSr)r4r)r�msgstr)rrrr�sr��ZIiiiiiirr
r*)�list�sortZpluralizable�join�id�	enumerater0�append�min�intr4rrr�writer�packrr�array)r&rr2ZmessagesZidsZstrsZoffsets�messager5Zmsgstrs�idxr0r6ZkeystartZ
valuestartZkoffsetsZvoffsetsZo1�l1Zo2�l2r)rr2r�write_moksD0""rH)F)
�__doc__rCrZbabel.messages.catalogrrZ
babel._compatrrrrr/rHrrrr�<module>
sT