%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3/dist-packages/babel/messages/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3/dist-packages/babel/messages/__pycache__/checkers.cpython-312.pyc

�

ƪbu��T�dZddlmZmZhd�ddhhd�gZd�Zd�Zd	�Zd
�Ze�Z	y)z�
    babel.messages.checkers
    ~~~~~~~~~~~~~~~~~~~~~~~

    Various routines that help with validation of translations.

    :since: version 0.9

    :copyright: (c) 2013-2022 by the Babel Team.
    :license: BSD, see LICENSE for more details.
�)�TranslationError�
PYTHON_FORMAT>�d�i�u�x�X>�F�G�f�gc��|js&t|jt�st	d��y|�y|j}t|t
tf�s|f}t|�|jk7rt	d|jz��y)z0Verify the number of plurals in the translation.z/Found plural forms for non-pluralizable messageNz*Wrong number of plural forms (expected %d))	�pluralizable�
isinstance�string�strr�list�tuple�len�num_plurals)�catalog�message�msgstrss   �9/usr/lib/python3/dist-packages/babel/messages/checkers.pyrrs�������'�.�.�#�.�"�$-�.�
.��
����n�n�G��g��e�}�-��*��
�7�|�w�*�*�*��K�&�2�2� 3�4�	4�+�c��d|jvry|j}t|ttf�s|f}|j
}t|ttf�s|f}t
||�D]\}}|s�	t||��y)z9Verify the format string placeholders in the translation.z
python-formatN)�flags�idrrrr�zip�_validate_format)rr�msgidsr�msgid�msgstrs      r�
python_formatr$,st���g�m�m�+��
�Z�Z�F��f�t�U�m�,�����n�n�G��g��e�}�-��*���V�W�-�,�
��v���U�F�+�,rc
��d�}d�}d�}t|||f�\}}t|||f�\}}|r|s
|std��||k7rtd��|rft|�t|�k7rtd��tt	||��D]+\}	\\}
}\}
}|||�r�td|	dz||fz��yt|�}
|D];\}}||
vrtd	|z��|||
|�r�%td
|�d|�d|
|�d
���y)a�Test format string `alternative` against `format`.  `format` can be the
    msgid of a message and `alternative` one of the `msgstr`\s.  The two
    arguments are not interchangeable as `alternative` may contain less
    placeholders if `format` uses named placeholders.

    The behavior of this function is undefined if the string does not use
    string formattings.

    If the string formatting of `alternative` is compatible to `format` the
    function returns `None`, otherwise a `TranslationError` is raised.

    Examples for compatible format strings:

    >>> _validate_format('Hello %s!', 'Hallo %s!')
    >>> _validate_format('Hello %i!', 'Hallo %d!')

    Example for an incompatible format strings:

    >>> _validate_format('Hello %(name)s!', 'Hallo %s!')
    Traceback (most recent call last):
      ...
    TranslationError: the format strings are of different kinds

    This function is used by the `python_format` checker.

    :param format: The original format string
    :param alternative: The alternative format string that should be checked
                        against format
    :raises TranslationError: on formatting errors
    c��g}tj|�D]:}|j�\}}}|dk(r|��|j|t	|�f��<|S)N�%)r�finditer�groups�appendr)r�result�match�name�format�typechars      r�_parsez _validate_format.<locals>._parse\s]����"�+�+�F�3�	1�E�%*�\�\�^�"�D�&�(��3��4�<���M�M�4��X��/�0�		1�
�
rc�<�||k(rytD]
}||vs�||vs�
yy)NTF)�_string_format_compatibilities)�a�b�sets   r�_compatiblez%_validate_format.<locals>._compatiblees0����6��1�	�C��C�x�A��H��	�rc�b�d}|D]\}}|�|du}�
|du|k7s�td��t|�S)Nz5format string mixes positional and named placeholders)r�bool)�results�
positionalr-�chars    r�_check_positionalz+_validate_format.<locals>._check_positionalmsY���
�!�	E�J�D�$��!�!�T�\�
��D�L�Z�/�*�,D�E�E�	E��J��rzplaceholders are incompatiblez)the format strings are of different kindsz-positional format placeholders are unbalancedzDincompatible format for placeholder %d: %r and %r are not compatible�zunknown named placeholder %rz$incompatible format for placeholder z: z and z are not compatibleN)�maprr�	enumerater�dict)r.�alternativer0r6r<r3r4�a_positional�b_positional�idx�_�first�second�type_mapr-r/s                rr r <sY��@��	 ��v���,�-�D�A�q�"%�%6��A��!?��L�,��L���>�?�?�	��	%��J�K�K���q�6�S��V��"�$0�1�
1�.7��A�q�	�.B�	A�*�C�*�*�1�e�k�q�&��u�f�-�&�(J�(+�a����'?�(@�A�A�	A���7���	I�N�D�(��8�#�&�'E��'L�M�M� ��8�D�>�:�&�)-�h����(H�I�I�		Irc���g}	ddlm}|jd�D]!}|j|j	���#	t
|�dk(rttgS|S#t
$rY�'wxYw)Nr)�working_setzbabel.checkers)	�
pkg_resourcesrJ�iter_entry_pointsr*�load�ImportErrorrrr$)�checkersrJ�entry_points   r�_find_checkersrQ�ss���H�0�-�'�8�8�9I�J�	0�K��O�O�K�,�,�.�/�	0�
�8�}����]�+�+��O���
��
�s�A�	A(�'A(N)
�__doc__�babel.messages.catalogrrr2rr$r rQrO�rr�<module>rUsH��
�C�
��#�J��"��4�(
,� \I�~
� ��r

Zerion Mini Shell 1.0