__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

*:�g`����SrSSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
Jr SSKJr SSKJrJrJr SSKJrJr SSKJr SS	KJr SS
KJrJr SSKJ r J!r!J"r"J#r# SSK$J%r% SS
K&J'r'J(r( SSK)J*r* \RV"S5r,"SS\-5r."SS\.5r/"SS\.5r0"SS\.5r1S1Sjr2"SS5r3"SS\35r4Sr5"SS\35r6"S S!\35r7"S"S#\35r8"S$S%5r9S&r:S1S'jr;S1S(jr<S)S*.S2S+jjr=S3S4S,jjr>S5S-jr?S6S7S.jjr@S8S/jrA\BS0:Xa\:"5 gg)9z�
babel.messages.frontend
~~~~~~~~~~~~~~~~~~~~~~~

Frontends for the message extraction functionality.

:copyright: (c) 2013-2025 by the Babel Team.
:license: BSD, see LICENSE for more details.
�)�annotationsN)�RawConfigParser)�StringIO)�BinaryIO�Iterable�Literal)�Locale�
localedata)�__version__)�UnknownLocaleError)�DEFAULT_HEADER�Catalog)�DEFAULT_KEYWORDS�DEFAULT_MAPPING�check_and_call_extract_file�extract_from_dir)�write_mo)�read_po�write_po)�LOCALTZ�babelc��\rSrSrSrg)�	BaseError�,�N��__name__�
__module__�__qualname__�__firstlineno__�__static_attributes__r��9/usr/lib/python3/dist-packages/babel/messages/frontend.pyrr,���r"rc��\rSrSrSrg)�OptionError�0rNrrr"r#r&r&0r$r"r&c��\rSrSrSrg)�
SetupError�4rNrrr"r#r)r)4r$r"r)c��\rSrSrSrSrg)�ConfigurationError�8z+
Raised for errors in configuration files.
rN)rrrr �__doc__r!rr"r#r,r,8s��r"r,c�^�/n[U[[45(dU/nUHmnUcM[U[[45(aUR[	X1S95 M=URS[U5R
U555 Mo [SU55(deU$)a�
Make a list out of an argument.

Values from `distutils` argument parsing are always single strings;
values from `optparse` parsing may be lists of strings that may need
to be further split.

No matter the input, this function returns a flat list of whitespace-trimmed
strings, with `None` values filtered out.

>>> listify_value("foo bar")
['foo', 'bar']
>>> listify_value(["foo bar"])
['foo', 'bar']
>>> listify_value([["foo"], "bar"])
['foo', 'bar']
>>> listify_value([["foo"], ["bar", None, "foo"]])
['foo', 'bar', 'foo']
>>> listify_value("foo, bar, quux", ",")
['foo', 'bar', 'quux']

:param arg: A string or a list of strings
:param split: The argument to pass to `str.split()`.
:return:
)�splitc3�@# �UHoR5v� M g7f�N��strip)�.0�ss  r#�	<genexpr>� listify_value.<locals>.<genexpr>cs���<�&;��7�7�9�9�&;���c3�B# �UHn[U[5v� M g7fr2)�
isinstance�str)r5�vals  r#r7r8ds���3�s��z�#�s�#�#�s�s�)r;�list�tuple�extend�
listify_valuer<r0�all)�argr0�outr=s    r#rArA>s���4
�C��c�D�%�=�)�)��e�����;���c�D�%�=�)�)��J�J�}�S�6�7���
�
�<�c�#�h�n�n�U�&;�<�<�
��3�s�3�3�3�3�3��Jr"c�H�\rSrSrSrSrSr0r0r\	r	S	Sjr
SrSrSr
Srg)
�CommandMixin�hNrc�v�XlUR5 SUlSUlSUlSUlSUlg)NFr)�distribution�initialize_options�_dry_run�verbose�force�help�	finalized)�self�dists  r#�__init__�CommandMixin.__init__�s7�� �����!���
������
���	���r"c��gr2r�rPs r#rJ�CommandMixin.initialize_options�s��r"c�T�UR(dUR5 SUlg)N�)rO�finalize_optionsrUs r#�ensure_finalized�CommandMixin.ensure_finalized�s���~�~��!�!�#���r"c�4�[SURS35e)Nzabstract method -- subclass z must override)�RuntimeError�	__class__rUs r#rY�CommandMixin.finalize_options�s ���*�4�>�>�*:�.�I�
�	
r")rKrIrOrMrNrLr2)rrrr �as_args�multiple_value_options�boolean_options�option_aliases�option_choices�logrRrJrZrYr!rr"r#rFrFhsA��
�G� ���O��N��N��C��
��

r"rFc�@�\rSrSrSr/SQrSS/rSrSrSr	S	r
S
rg)�CompileCatalog�z+compile message catalogs to binary MO files))�domain=�Dz>domains of PO files (space separated list, default 'messages'))z
directory=�d�.path to base directory containing the catalogs�zinput-file=�izname of the input file)�output-file=�ozQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.mo')��locale=�lz locale of the catalog to compile)�	use-fuzzy�fzalso include fuzzy translations)�
statisticsNz#print statistics about translationsrtrvc�f�SUlSUlSUlSUlSUlSUlSUlg�N�messagesF)�domain�	directory�
input_file�output_file�locale�	use_fuzzyrvrUs r#rJ�!CompileCatalog.initialize_options�s4�� ��������������������r"c���[UR5UlUR(dUR(d[	S5eUR
(dUR(d[	S5egg)Nz<you must specify either the input file or the base directoryz=you must specify either the output file or the base directory)rArzr|r{r&r}rUs r#rY�CompileCatalog.finalize_options�sN��#�D�K�K�0������t�~�~��\�]�]��������]�^�^�)7�r"c���SnURH7nURU5R5HnU[U5-
nM M9 U(aURRSU5 U(aS$S$)Nrz%d errors encountered.rX)rz�_run_domain�values�lenre�error)rP�n_errorsrz�errorss    r#�run�CompileCatalog.run�sf�����k�k�F��*�*�6�2�9�9�;���C��K�'��<�"���H�H�N�N�3�X�>���%�1�%r"c
��/n/nUR(Gd|UR(a�URUR[RRURURSUS3545 UR[RRURURSUS355 GOi[R"UR5H�n[RRURUSUS35n[RRU5(dMXURXE45 UR[RRURUSUS355 M� O�URURUR45 UR(aURUR5 OHUR[RRURURSUS355 U(d[S5e0n[U5GH�unupEX7n[US5n	[X�5n
SSS5 UR(aySn[W
5SSHnUR (dMUS-
nM Sn
[#U
5(aUS-[#U
5-n
UR$R'S	U[#U
5X�5 W
R((a/UR*(dUR$R'S
U5 M�[U
R-55=Xj'nUH5up�UH*nUR$R/SX\R0U5 M, M7 UR$R'SXX5 [US
5n[3UX�R*S9 SSS5 GM� U$!,(df   GN}=f!,(df   GM�=f)N�LC_MESSAGES�.poz.mo�no message catalogs found�rbrrX�dz)%d of %d messages (%d%%) translated in %sz'catalog %s is marked as fuzzy, skippingzerror: %s:%d: %szcompiling catalog %s to %s�wb)r)r|r~�append�os�path�joinr{�listdir�existsr}r&�	enumerate�openrrvr>�stringr�re�info�fuzzyr�checkr��linenor)rPrz�po_files�mo_filesr~�po_file�catalogs_and_errors�idx�mo_file�infile�catalog�
translated�message�
percentage�catalog_errorsr�r��outfiles                  r#r��CompileCatalog._run_domain�s�����������{�{�������!#�����d�n�n�d�k�k�.;�17���n�">�!?�@���������T�^�^�T�[�[�-:�06�x�s�^�!=�>�!�j�j����8�F� �g�g�l�l�4�>�>�6�+8�V�H�C�.�J�G��w�w�~�~�g�.�.� ����(9�:� ��������T�^�^�V�5B�8>�x�s�^�)E�F�9�
�O�O�T�[�[�$�/�/�:�;�������� 0� 0�1���������T�^�^�T�[�[�-:�06�x�s�^�!=�>���9�:�:� ��&/��&9�"�C�"�&��m�G��g�t�$��!�&�1��%�����
�#�G�}�Q�R�0�G��~�~�~�"�a��
� 1��
��w�<�<�!+�c�!1�S��\�!A�J����
�
�?���G��j��
�}�}�T�^�^����
�
�G��Q��<@�����<Q�Q��(�>�#1���#�E��H�H�N�N�*�G�^�^�U��$�$2�
�H�H�M�M�6��I��g�t�$����'�^�^�D�%�$�?':�D#�"�A%�$��:%�$�s�'O)�O;�)
O8	�;
P	)r{rzr|r~r}rvrN)rrrr �description�user_optionsrbrJrYr�r�r!rr"r#rgrg�s0��?�K��L�"#�L�1�O� �_�&�F#r"rgc�^�U4SjnU$)zG
Build a directory_filter function based on a list of ignore patterns.
c�x>^�[RRU5m[U4SjT55(+$)Nc3�R># �UHn[R"TU5v� M g7fr2)�fnmatch)r5�ignore_pattern�basenames  �r#r7�G_make_directory_filter.<locals>.cli_directory_filter.<locals>.<genexpr>s+����
���
�O�O�H�n�5�5��s�$')r�r�r��any)�dirnamer��ignore_patternss @�r#�cli_directory_filter�4_make_directory_filter.<locals>.cli_directory_filters8����7�7�#�#�G�,���
��
�
�
�	
r"r)r�r�s` r#�_make_directory_filterr�s���

� �r"c�j�\rSrSrSr/SQr/SQrSrSrSSS	S
SS.r	S
S0r
SrSrSSjr
SrSrSrg)�ExtractMessagesi%z1extract localizable strings from the project code))zcharset=Nz3charset to use in the output file (default "utf-8"))z	keywords=�kzispace-separated list of keywords to look for in addition to the defaults (may be repeated multiple times))�no-default-keywordsNz#do not include the default keywords)z
mapping-file=�Fz&path to the mapping configuration file)�no-locationNz>do not include location comments with filename and line number)z
add-location=Nz�location lines format. If it is not given or "full", it generates the lines with both file name and line number. If it is "file", the line number part is omitted. If it is "never", it completely suppresses the lines (same as --no-location).)�omit-headerNz'do not include msgid "" entry in header)rorpzname of the output file�zwidth=�wz"set output line width (default 76)��no-wrapNzVdo not break long message lines, longer than the output line width, into several lines)�sort-outputNz&generate sorted output (default False))�sort-by-fileNz,sort output by file location (default False))zmsgid-bugs-address=Nzset report address for msgid)zcopyright-holder=Nzset copyright holder in output)zproject=Nzset project name in output)zversion=Nzset project version in output)z
add-comments=�czuplace comment block with TAG (or those preceding keyword lines) in output file. Separate multiple TAGs with commas(,))�strip-commentsr6z)strip the comment TAGs from the comments.)zinput-paths=Nzofiles or directories that should be scanned for messages. Separate multiple files or directories with commas(,))zinput-dirs=Nz@alias for input-paths (does allow files as well as directories).)zignore-dirs=NzwPatterns for directories to ignore when scanning for messages. Separate multiple patterns with spaces (default ".* ._"))zheader-comment=Nzheader comment for the catalog)zlast-translator=Nz7set the name and email of the last translator in output)r�r�r�r�r�r�r�zinput-paths)zadd-comments�keywordszignore-dirs)z	--keyword)z	--mapping)z--output)z--strip-comment-tags)z--last-translator)r�zmapping-filezoutput-filer�zlast-translatorzadd-location)�full�file�neverc�T�SUlSUlSUlSUlSUlSUlSUlSUlSUlSUl	SUl
SUlSUlSUl
SUlSUlSUlSUlSUlSUlSUlSUlSUlSUlg)Nzutf-8FT)�charsetr��no_default_keywords�mapping_file�no_location�add_location�omit_headerr}�
input_dirs�input_paths�width�no_wrap�sort_output�sort_by_file�msgid_bugs_address�copyright_holder�project�version�add_comments�strip_comments�include_lineno�ignore_dirs�header_comment�last_translatorrUs r#rJ�"ExtractMessages.initialize_optionsts��������
�#(�� � ��� ��� ��� ��������������
���� ���!���"&��� $��������� ���#���"������"���#��r"c	�f�UR(a.UR(dURUlO[S5eUR(a0O[R
"5nUR
[[UR555 Xl	UR(d[S5eUR(d[S5eUR(aUR(a[S5eUR(dUR(dSUlO'URb[UR5UlUR(aUR(a[S5eUR(aF[!UR["5(a&[$R&"SUR5UlO~UR(bj[*R-UR(R.=(d SVs/sHnUR'S	S
5SPM sn5R15UlO/UlUR(d[S5eURH6n[2R4R7U5(aM)[S
US35e [UR8=(d SS5UlUR((a`UR:(dUR(R=5UlUR>(dUR(RA5UlURBS:XaSUl"OURBS:XaSUl#[URH5nU(a[KU5Ul&gSUl&gs snf)Nz1input-dirs and input-paths are mutually exclusivez=you must specify new keywords if you disable the default oneszno output file specified�0'--no-wrap' and '--width' are mutually exclusive�Lz;'--sort-output' and '--sort-by-file' are mutually exclusivez,\s*r�.rXrz'no input files or directories specifiedzInput path: z does not exist�,r�Tr�F)'r�r�r&r�r�copy�update�parse_keywordsrAr�r}r�r��intr�r�r;r<�rer0rI�dict�fromkeys�packages�keysr�r�r�r�r��get_namer��get_versionr�r�r�r�r��directory_filter)rPr�r�r�r�s     r#rY� ExtractMessages.finalize_options�s����?�?��#�#�#'�?�?�� �!�G����1�1�2�7G�7L�7L�7N������}�T�]�]�'C�D�E� �
��}�}��O��
�����8�9�9��<�<�D�J�J��B��
��|�|�D�J�J��D�J�
�Z�Z�
#��T�Z�Z��D�J����� 1� 1��M��
�����$�*�*�C�0�0�#%�8�8�G�T�5E�5E�#F�� ��
�
�
�
*�#�}�}��+�+�4�4�:��:�.�:�A�����Q���"�:�.� ��t�v�
��
 "�D������G�H�H��$�$�D��7�7�>�>�$�'�'�!�L���o�"F�G�G�%�*�$�*;�*;�*A�r�3�G�������<�<�#�0�0�9�9�;����<�<�#�0�0�<�<�>�������'�#�D��
�
�
�&�
(�"'�D��#�D�$4�$4�5���$:�;�$G�D�!�$(�D�!��?.s�N.c�^^�SUU4SjjnU$)Nc�~>�US:Xag[RRT5(aTnO=[RR[RR	TU55nSnU(a,SR	SUR555nSUS3nTRRSX45 g)N�ignore�z, c3�6# �UHupUSUS3v� M g7f)z="�"Nr)r5r��vs   r#r7�DExtractMessages._build_callback.<locals>.callback.<locals>.<genexpr>�s���&P����!��B�q�c��|��s�z (�)zextracting messages from %s%s)r�r��isfile�normpathr��itemsrer�)�filename�method�options�filepath�optstr�
opt_valuesr�rPs      ��r#�callback�1ExtractMessages._build_callback.<locals>.callback�s������!���w�w�~�~�d�#�#����7�7�+�+�B�G�G�L�L��x�,H�I���F��!�Y�Y�&P��
�
��&P�P�
��j�\��+���H�H�M�M�9�8�Lr")rr<rr<rr�r)rPr�rs`` r#�_build_callback�ExtractMessages._build_callback�s���	M�	M�&�r"c
��UR5n[URS5n[URUR
URURURUR=(d [URS9nUGH;upEnURU5n[RRU5(aD[R "5n[#XEUXpR$UR&UR(U5n	O7[+XEUUR$UR&UUR(UR,S9n	U	H~up�p�n[RRU5(aU
nO<[RR/[RR1XJ55nUR3USX�4/X�S9 M� GM> UR4R7SUR5 [9X#UR:UR<UR>UR@URBURDS9 SSS5 g!,(df   g=f)Nr�)r�r�r�r�r�r�r�)r��comment_tagsr�strip_comment_tagsr�)�
auto_comments�contextzwriting PO template file to %s)r�r�r�r�r�r�)#�
_get_mappingsr�r}rr�r�r�r�r�r�r
r�rr�r�r�getcwdrr�r�r�rr�rr��addrer�rr�r�r�r�r�r�)rP�mappingsr�r�r��
method_map�options_mapr�current_dir�	extractedrr�r��commentsrr	s                r#r��ExtractMessages.run�s����%�%�'��
�$�"�"�D�
)�W��d�l�l�&*�l�l�15�1H�1H�/3�/D�/D�&*�l�l�.2�.A�.A�.S�^�.2�.B�.B�
D�G�2:�-��+��/�/��5���7�7�>�>�$�'�'�"$�)�)�+�K� ;��+� �-�-��1B�1B��+�+�[�!�I�!1��+�!%���%)�%6�%6�!)�+/�+>�+>�)-�)>�)>�
!�I�EN�@�H�g���w�w�~�~�d�+�+�#+��#%�7�7�#3�#3�B�G�G�L�L��4P�#Q���K�K����0B�/C�.6� �I�
EN�%2:�6
�H�H�M�M�:�D�<L�<L�M��W�T�Z�Z�!%�!1�!1�!%�!1�!1�!%�!1�!1�"&�"3�"3�$(�$7�$7�
9�K*�
)�
)�s�HI�
Ic��/nUR(a�URRS5(ah[URS5n[RRUR5S:XaSOSn[
UURUS9upESSS5 O3[UR5n[X RS9upESSS5 URHnURUWW45 M U$[URSS5(a�URRnUR5Hruph[U[5(a[[!U55upEO./0pTUH%up�nURX�45 U=(d 0XY'M' URXdU45 Mt U$URHnURU["045 M U$!,(df   GN=f!,(df   GN1=f)Nz.tomlr��pyproject.toml�
standalone)r�style�r�message_extractors)r��endswithr�r�r�r��_parse_mapping_toml�parse_mapping_cfgr�r��getattrrIr$rr;r<rr)rPr�fileobj�
file_stylerrr�r$�mapping�patternrrs            r#r�ExtractMessages._get_mappingss��������� � �)�)�'�2�2��$�+�+�T�2�g��7�7�+�+�D�,=�,=�>�BR�R�)�)��
/B��!%�!2�!2�(�/�+�J�
3�2��$�+�+�,��.?��Rc�Rc�.d�+�J�-��(�(������z�;� ?�@�)�&��!�T�&�&�(<�d�
C�
C�!%�!2�!2�!E�!E��!3�!9�!9�!;�
���g�s�+�+�.?���@Q�.R�+�J��.0�"��4;�0���"�)�)�7�*;�<�/6�}�"��,�5<�����;� ?�@�"<����(�(�������� ;�<�)���C3�2��-�,�s�
A	G�1G1�
G.�1
H)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r}r�r�r�r�r�r�N)r�r<)rrrr r�r�rbr`rarcrdrJrYrr�rr!rr"r#r�r�%sh��E�K�7�L�p�O��G���#�&�$�3�1��N�	�1��N�$�4G)�R�,,9�\&r"r�c�8�\rSrSrSr/SQrS/rSrSrSr	Sr
g	)
�InitCatalogiDz(create a new catalog based on a POT file)�rirjz&domain of PO file (default 'messages')rm)�output-dir=rkzpath to output directory�rorpzQname of the output file (default '<output_dir>/<locale>/LC_MESSAGES/<domain>.po'))rrrsz$locale for the new localized catalogr�r�r�c�f�SUlSUlSUlSUlSUlSUlSUlgrx)�
output_dirr}r|r~rzr�r�rUs r#rJ�InitCatalog.initialize_optionsZs4�������������� ��������
r"c��UR(d[S5eUR(d[S5e[R"UR5UlUR(dUR(d[S5eUR(dH[RRURURSURS35Ul[RR[RRUR55(d=[R"[RRUR55 UR (aUR"(a[S5eUR (dUR"(dSUlgUR"b[%UR"5Ulgg![an[U5UeSnAff=f)N�you must specify the input filez-you must provide a locale for the new catalogz%you must specify the output directoryr�r�r�r�)r|r&r~r	�parse�_localerr}r4r�r�r�rzr�r��makedirsr�r�r��rP�es  r#rY�InitCatalog.finalize_optionscsI������?�@�@��{�{��M�N�N�	(�!�<�<����4�D�L��������E�F�F����!�w�w�|�|�D�O�O�T�[�[�,9�d�k�k�]�#�;N� P�D���w�w�~�~�b�g�g�o�o�d�.>�.>�?�@�@��K�K�������(8�(8�9�:��<�<�D�J�J��P�Q�Q��|�|�D�J�J��D�J�
�Z�Z�
#��T�Z�Z��D�J�$��"�	(��a�.�a�'��	(�s�%G-�-
H�7H�Hc���URRSURUR5 [	URS5n[XRS9nSSS5 URWl[RR[5UlSUl[	URS5n[X2URS9 SSS5 g!,(df   N�=f!,(df   g=f)N�creating catalog %s based on %sr��r~Fr�)r�)rer�r}r|r�rr~r9�datetime�nowr�
revision_dater�rr�)rPr�r�r�s    r#r��InitCatalog.run}s������
�
�-�t�/?�/?����	
��$�/�/�4�
(�F��f�[�[�9�G�)�
����� (� 1� 1� 5� 5�g� >�����
�
�$�"�"�D�
)�W��W�T�Z�Z�8�*�
)�)�
(��*�
)�s�C�:C)�
C&�)
C7)r9rzr|r~r�r4r}r�N�rrrr r�r�rbrJrYr�r!rr"r#r/r/Ds&��<�K��L�$!�k�O��)�49r"r/c�:�\rSrSrSr/SQr/SQrSrSrSr	Sr
g	)
�
UpdateCatalogi�z'update message catalogs from a POT file)r0rm)r1rkrlr2)r�Nz%do not include msgid  entry in headerrqr�r�)zignore-obsolete=Nz1whether to omit obsolete messages from the output)z
init-missing=Nz6if any output files are missing, initialize them first)�no-fuzzy-matching�Nzdo not use fuzzy matching)�update-header-commentNzupdate target header comment)�previousNz+keep previous msgids of translated messages)zcheck=Nz�don't update the catalog, just return the status. Return code 0 means nothing would change. Return code 1 means that the catalog would be updated)zignore-pot-creation-date=Nz=ignore changes to POT-Creation-Date when updating or checking)	r�r�zignore-obsoletezinit-missingrHrKrJr�zignore-pot-creation-datec���SUlSUlSUlSUlSUlSUlSUlSUlSUlSUl	SUl
SUlSUlSUl
SUlgrx)rzr|r4r}r�r~r�r��ignore_obsolete�init_missing�no_fuzzy_matching�update_header_commentrKr��ignore_pot_creation_daterUs r#rJ� UpdateCatalog.initialize_options�sr�� ������������ ��������
����$���!���!&���%*��"���
���
�(-��%r"c�4�UR(d[S5eUR(dUR(d[S5eUR(aUR(d[S5eUR
(aCUR(d[S5e[R"UR5UlOSUlUR(aUR(a[S5eUR(dUR(dSUlO'URb[UR5UlUR(aUR(aSUlggg![an[U5UeSnAff=f)Nr7z-you must specify the output file or directoryzyou must specify the localez?you must specify the locale for the init-missing option to workr�r�F)r|r&r}r4r~rNr	r8r9rr�r�r�rOrKr;s  r#rY�UpdateCatalog.finalize_options�s������?�@�@��������M�N�N����D�K�K��;�<�<�����;�;�!�6���

,�%�|�|�D�K�K�8��� �D�L��<�<�D�J�J��P�Q�Q��|�|�D�J�J��D�J�
�Z�Z�
#��T�Z�Z��D�J��!�!�d�m�m�!�D�M�'4�!��&�
,�!�!�n�!�+��
,�s�%%E<�<
F�F�Fc���0n/nUR(Gd	UR(a_URUR[RRURURSURS3545 O�[R"UR5Htn[RRURUSURS35n[RRU5(dMbURX445 Mv O'URURUR45 U(d[S5eURnU(dI[RR[RRUR55Sn[URS5n[U5nSSS5 UGH�up8UR (a�[RRU5(d�UR"(aSX'MRUR$R'SX�R5 [URS5n[X`RS9n	SSS5 UR(W	l[*R*R-[.5U	lSU	l[US	5n
[5X�5 SSS5 UR$R'S
X�R5 [US5n[XcUS9n	SSS5 W	R7WUR8UR:UR<(+S9 [RR[RR?U5[@RB"5[RRU5-5n[US	5n[5X�URDURFURHURJS
9 SSS5 UR"(a}[US5n
[U
5nSSS5 [US5n[U5nSSS5 WR0WlURQU5X'[RN"U5 GM�[RR"X�5 GM� UR"(a�UR[5HGunnU(aUR$R'SU5 M+UR$R]SU5 MI [_URa55(d[cS5eUR$R'S5 gg!,(df   GN�=f!,(df   GN=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f![La [RN"U5 ef=f!,(df   GN�=f!,(df   GN�=f![TaG [RN"U5 [VRX"X�5 [RN"U5 GM�f=f)Nr�r�r�rr�Fr?r@r�zupdating catalog %s based on %s)r~rz)rP�update_creation_date)r�rM�include_previousr�zCatalog %s is up to date.zCatalog %s is out of date.zSome catalogs are out of date.z All the catalogs are up-to-date.)2r}r~r�r�r�r�r4rzr�r�r&�splitextr�r|r�rrNr�rer�r9rArBrrCr�rr�rOrPrQr��tempfile�
gettempprefixr�rMrKr��	Exception�remove�is_identical�rename�OSError�shutilr�r�warningrBr�r)rP�check_statusr�r~r�rzr��templaterr�r��tmpname�tmpfile�origfile�original_catalog�newfile�updated_catalog�
up_to_dates                  r#r��UpdateCatalog.run�s������������{�{�������!#�����d�o�o�t�{�{�.;�15���
�S�.A�"C�!D�E�
!�j�j����9�F� �g�g�l�l�4�?�?�F�+8�.2�k�k�]�#�+>�@�G��w�w�~�~�g�.�.� ����(9�:�:�
�O�O�T�[�[�$�*:�*:�;�<���9�:�:�������W�W�%�%�b�g�g�&6�&6�t���&G�H��K�F�
�$�/�/�4�
(�F��v��H�)�!)��F�� � �������)A�)A��:�:�-2�L�*�����
�
�5�x�����$�/�/�4�0�F�&�f�[�[�A�G�1�
"&�����(0�(9�(9�(=�(=�g�(F��%� %��
��(�D�)�W��W�.�*�
�H�H�M�M�;�X���W��h��%��!�&��G��&�
�N�N��$�0�0�&*�&@�&@�)-�)F�)F�%F�
�
��g�g�l�l�2�7�7�?�?�8�#<�#+�#9�#9�#;�#%�7�7�#3�#3�H�#=�$>�?�G�
��'�4�(�G��W�)-�)9�)9�-1�-A�-A�.2�m�m�4�:�:�O�)��z�z��(�D�)�X�'.�x�'8�$�*��'�4�(�G�&-�g�&6�O�)�0@�0N�0N��-�)8�)E�)E�FV�)W��&��	�	�'�"��

#��	�	�'�,�o!)�D�:�:�(4�(:�(:�(<�$��*���H�H�M�M�"=�x�H��H�H�$�$�%A�8�L�	)=�
�|�*�*�,�-�-�� @�A�A����
�
�@�A���K)�
(��1�0��*�)��&�%��)�(��
�
��	�	�'�"��
��
*�)��(�(���
#��	�	�(�#����G�.��	�	�'�"�"�
#�s��U<�/V�V �V2�W�"6W�W�=W;�X
�/X�<
V�
V	� 
V/	�2
W	�
W	�W�W�"W8�;
X
	�
X	�AY0�/Y0)r9r�rzrMrQrNr|r~rOr�r�r4r}rKrPr�NrErr"r#rGrG�s&��;�K�#�L�H�O�.�""�>ir"rGc�b�\rSrSrSrSrS\3rSSSSS	.r\	\
\\S	.r
S
rSSjrSrS
rSrSrg
)�CommandLineInterfaceiWz�Command-line interface.

This class provides a simple command-line interface to the message
extraction and PO file generation functionality.
z%%prog %s [options] %sz%prog z$compile message catalogs to MO filesz:extract messages from source files and generate a POT filez+create new message catalogs from a POT filez0update existing message catalogs from a POT file)�compile�extract�initr�Nc	��Uc[Rn[R"URS-UR
S9UlURR5 URURl	URRSSSSS9 URRS	S
SS[RS
S9 URRSSSS[RSS9 URRS[RS9 URR!USS5up#UR#UR$5 UR&(aq[(R*"5n[-SU55S-n[/U5H7n[0R2"U5n[5USU3SUR635 M9 gU(dURR9S5 USnX�R:;aURR9SUS35 UR=X�SS5n	U	R?5$)zkMain entry point of the command-line interface.

:param argv: list of arguments passed on the command-line
N)�commandz[args])�usager�z--list-locales�list_locales�
store_truez print all known locales and exit)�dest�actionrNz-vz	--verbose�store_const�loglevelzprint as much as possible)rwrv�constrNz-qz--quietzprint as little as possibleF)rtryrXc3�8# �UHn[U5v� M g7fr2�r�)r5�
identifiers  r#r7�+CommandLineInterface.run.<locals>.<genexpr>�s���I�[�z�3�z�?�?�[����<� rzQno valid command or option passed. Try the -h/--help option for more information.zunknown command "r�) �sys�argv�optparse�OptionParserrsr��parser�disable_interspersed_args�_help�
print_help�
add_option�logging�DEBUG�ERROR�set_defaults�INFO�
parse_args�_configure_loggingryrtr
�locale_identifiers�max�sortedr	r8�print�english_namer��commands�_configure_commandr�)
rPr�r�args�identifiers�id_widthr}r~�cmdname�cmdinsts
          r#r��CommandLineInterface.runps���<��8�8�D��+�+�$�*�*�?T�2T�48�L�L�B������-�-�/�!%������������/�n�&2�$F�	�	H�	
�����t�[��$.�g�m�m�$?�	�	A�	
�����t�Y�}�$.�g�m�m�$A�	�	C�	
��� � �e�g�l�l� �K����.�.�t�A�B�x�8�
������ 0� 0�1����$�7�7�9�K��I�[�I�I�A�M�H�$�[�1�
����j�1����A�h�Z�<�0��&�2E�2E�1F�G�H�2����K�K���O�
P��q�'���-�-�'��K�K��� 1�'��!�<�=��)�)�'���8�<���{�{�}�r"c��[UlURRU5 URR(aURRSnO0[R"5nURRU5 URU5 [R"S5nURU5 g)Nrz%(message)s)re�setLevel�handlersr��
StreamHandler�
addHandler�	Formatter�setFormatter)rPry�handler�	formatters    r#r��'CommandLineInterface._configure_logging�s�����������(�#��8�8����h�h�'�'��*�G��+�+�-�G��H�H����(�����"��%�%�m�4�	����Y�'r"c�4�[URR55 [S5 [S[SUR55S-5n[URR
55Hup#[SUSU3SU35 M g)Nz	commands:�c3�8# �UHn[U5v� M g7fr2r|)r5rrs  r#r7�-CommandLineInterface._help.<locals>.<genexpr>�s���I�=��s�7�|�|�=�rrXz  r�r�)r�r��format_helpr�r�r�r)rP�	cmd_width�namer�s    r#r��CommandLineInterface._help�s|��
�d�k�k�%�%�'�(�
�k����3�I�4�=�=�I�I�A�M�N�	�!'��
�
�(;�(;�(=�!>��D��B�t�A�i�[�=�)��;�-�8�9�"?r"c���URUnU"5nUR(aURUl[U[5(deUR	5 [
R"URUS4-URUS9n[USS5nURGHupxn	URS5n
[XJRSS55nSU
3/nU(aURSU35 URURR!U
S	55 UR"R!U
S5n
X�:XaU=RS
U
S3-
slM�X�R$;aUR&"USU	S
.6 M�X�R(;aUR&"USX�S.6 GMUR&"X�X�S.6 GM UR+U5up�U(a[-X�RSS5U5 [/U5R15Hunn[-UUU5 M UR35 U$![4a%nUR7[9U55 SnAU$SnAff=f)z*
:type cmdname: str
:type argv: list[str]
r�)rsr�r`N�=�-�_z--rr��>ru)rwrNr�)rwrN�choices)rN�defaultr�)�command_classesrer;rFrJr�r�rsr�r(r�r4�replacer�r@rc�getrdrbr�rar��setattr�varsrrZr&r�r<)rPr�r��cmdclassr�r�r`�long�shortrNr�r��strsr�rr��key�value�errs                   r#r��'CommandLineInterface._configure_command�s��
�'�'��0���*���8�8��(�(�G�K��'�<�0�0�0�0��"�"�$��&�&��*�*���}�,��
�
�g�.�
��&�h�	�4�@��!)�!6�!6��D���:�:�c�?�D��g�|�|�C��'=�>�G����K�=�D�����a��w�K�(��K�K��/�/�3�3�D�"�=�>��-�-�1�1�$��=�G������!�D�6���+���1�1�1��!�!�4��4�H��8�8�8��!�!�4��t�U��!�!�4�G�U�"7� �)�)�$�/�
����G�_�_�S�#�6��=��w�-�-�-�/�J�C���G�S�%�(�0�	#��$�$�&�����	#��L�L��S��"�"����	#�s�,H>�>
I-�I(�(I-)rer�r2)rrrr r.rs�VERSIONr�r�rgr�r/rGr�rer�r�r�r�r!rr"r#rmrmWs^���
%�E��w�i� �G�9�O�=�D�	�H�"�"���	�O��C�,�\
(�:�.r"rmc�P�[5R[R5$r2)rmr�r�r�rr"r#�mainr��s���!�%�%�c�h�h�/�/r"c�L�[R"S[SS9 [X5$)Nz:parse_mapping is deprecated, use parse_mapping_cfg instead�)�
stacklevel)�warnings�warn�DeprecationWarningr')r)rs  r#�
parse_mappingr��s$���M�M�D����
�W�/�/r"c��0n/n0n[5nURX5 UR5HnnUS:Xa[UR	U55nM%SURSS55upxUR
X�45 [UR	U55XH'Mp U(a%[U5Hun	up�Xr;aX'nX�4X9'M X44$)z�Parse an extraction method mapping from a file-like object.

:param fileobj: a readable file-like object containing the configuration
                text to parse
:param filename: the name of the file being parsed, for error messages
�
extractorsc3�@# �UHoR5v� M g7fr2r3)r5�parts  r#r7�$parse_mapping_cfg.<locals>.<genexpr>s���N�8M��z�z�|�|�8M�r9�:rX)r�	read_file�sectionsr�rr0r�r�)
r)rr�rrr��sectionrr,r�s
          r#r'r'�s����J��J��K�
�
�F�
���W�'��?�?�$���l�"��f�l�l�7�3�4�J�N��
�
�c�1�8M�N�O�F����w�/�0�#'����W�(=�#>�K� �
%��&/�
�&;�"�C�"�'��#�#�+��&�/�J�O�'<�
�"�"r"�	(unknown)r#c
��0n/n0nURS05n[U[5(d[US[	U5<35eUR5HUupg[U[5(d[USU<35e[U[5(d[USU<35eXrU'MW SU;a[US35eURS/5n[U[5(d[US[	U5<35e[U5GH5up�[U
[5(d[US	U	S
[	U
5<35eU
R5n
U
RSS5n[U[5(d[US	U	SU<35eURXf5nU
RS
S5n[U[[45(d[US	U	SU<35e[U[5(dU/nUHBn[U[5(d[US	U	SU<35eURX�45 X�U'MD GM8 X44$)Nr�z): extractors: Expected a dictionary, got z6: extractors: Extraction method must be a string, got z;: extractors: Callable specification must be a string, got r+z8: 'mapping' is not a valid key, did you mean 'mappings'?rz!: mappings: Expected a list, got z: mappings[z]: Expected a dictionary, got rz"]: 'method' must be a string, got r,z-]: 'pattern' must be a list or a string, got z+]: 'pattern' elements must be strings, got )r�r;r�r,�typerr<r>r�r��popr�)
�configrr�rr�extractors_readr�
callable_spec�
mappings_readr��entryr,�pats
             r#�_parse_config_objectr�sT���J��J��K��j�j��r�2�O��o�t�,�,� �H�:�-V�W[�\k�Wl�Vo�!p�q�q�!0�!6�!6�!8����&�#�&�&�$��z�1g�hn�gq�%r�s�s��-��-�-�$��z�1l�mz�l}�%~���*�6��
"9��F�� �H�:�-e�!f�g�g��J�J�z�2�.�M��m�T�*�*� �H�:�-N�t�Ta�Ob�Ne�!f�g�g��
�.�
���%��&�&�$��z��S�E�A_�`d�ej�`k�_n�%o�p�p��
�
������8�T�*���&�#�&�&�$��z��S�E�Ac�dj�cm�%n�o�o�����/���)�)�I�t�,���'�D�#�;�/�/�$��z��S�E�An�ov�ny�%z�{�{��'�4�(�(��i�G��C��c�3�'�'�(�H�:�[���Ep�qt�pw�)x�y�y����s�m�,�$���	�!/�,�"�"r"c��SSKnURU5nUS:Xa
USSnO,US	:XaUnSU;a[US
35eO[SU<35e[XqS9$![a& SSKnNh![an[S5UeSnAff=ff=f!URan[USU35UeSnAff=f![[4an[US35UeSnAff=f)
a�Parse an extraction method mapping from a binary file-like object.

.. warning: As of this version of Babel, this is a private API subject to changes.

:param fileobj: a readable binary file-like object containing the configuration TOML to parse
:param filename: the name of the file being parsed, for error messages
:param style: whether the file is in the style of a `pyproject.toml` file, i.e. whether to look for `tool.babel`.
rNz0tomli or tomllib is required to parse TOML filesz: Error parsing TOML file: r �toolrz': No 'tool.babel' section found in filer!zC: 'babel' should not be present in a stand-alone configuration filezUnknown TOML style r#)
�tomllib�ImportError�tomli�load�TOMLDecodeErrorr,�	TypeError�KeyError�
ValueErrorr�)r)rr"r��ie�parsed_datar<�
babel_datas        r#r&r&@s,��Z��U��l�l�7�+��
� � �	b�$�V�,�W�5�J�
�,�	� �
��j� �$��z�1t�%u�v�v�!��.�u�i�8�9�9��
�>�>��/�Z�	Z�#���	Z��P�Q�WY�Y��	Z��Z���"�"�U� �H�:�-H���!L�M�ST�T��U���8�$�	b�$��z�1X�%Y�Z�`a�a��	b�sW�A�B�B9�
B
�(A.�.
B	�8B�B	�	B
�B6� B1�1B6�9C�	C�Cc��/nSnURS5H`nUSS:Xa[USS5nMUSS:Xa!UR[USS5S45 MFUR[U55 Mb U[U54$)Nr�����tr�)r0r�r�r?)r6�inds�number�xs    r#�_parse_specr�is��
�D�
�F�
�W�W�S�\���R�5�C�<���3�B��[�F�
�r�U�c�\��K�K��Q�s��V��c�*�+��K�K��A���
��5��;��r"c��0nUHDnSU;a!URS5up4[U5upVOUnSnSnXaRU05U'MF UR5Hupx[	U5S1:XdMUSX'M  U$)acParse keywords specifications from the given list of strings.

>>> import pprint
>>> keywords = ['_', 'dgettext:2', 'dngettext:2,3', 'pgettext:1c,2',
...             'polymorphic:1', 'polymorphic:2,2t', 'polymorphic:3c,3t']
>>> pprint.pprint(parse_keywords(keywords))
{'_': None,
 'dgettext': (2,),
 'dngettext': (2, 3),
 'pgettext': ((1, 'c'), 2),
 'polymorphic': {None: (1,), 2: (2,), 3: ((3, 'c'),)}}

The input keywords are in GNU Gettext style; see :doc:`cmdline` for details.

The output is a dictionary mapping keyword names to a dictionary of specifications.
Keys in this dictionary are numbers of arguments, where ``None`` means that all numbers
of arguments are matched, and a number means only calls with that number of arguments
are matched (which happens when using the "t" specifier). However, as a special
case for backwards compatibility, if the dictionary of specifications would
be ``{None: x}``, i.e., there is only one specification and it matches all argument
counts, then it is collapsed into just ``x``.

A specification is either a tuple or None. If a tuple, each element can be either a number
``n``, meaning that the nth argument should be extracted as a message, or the tuple
``(n, 'c')``, meaning that the nth argument should be extracted as context for the
messages. A ``None`` specification is equivalent to ``(1,)``, extracting the first
argument.
r�N)r0r��
setdefaultr�set)	�stringsr�r��funcname�spec_strr��specr�rs	         r#r�r�vs���:�H����&�=�!'���c�!2��H�&�x�0�L�F�D��H��F��D�48���H�b�)�&�1����� ����q�6�d�V���D�'�H�K�!��Or"c�^�US;aSSKJn [X5$[S[<SU<35e)N>�init_catalog�update_catalog�compile_catalog�extract_messages�check_message_extractorsr)�setuptools_frontendzmodule z has no attribute )�babel.messagesrr(�AttributeErrorr)r�rs  r#�__getattr__r�s5���t�t�6��*�1�1�
�7�8�,�.@���I�
J�Jr"�__main__r2)r�r�)r�r!)r)rrr<r"z'Literal['standalone', 'pyproject.toml'])r6r<�returnz4tuple[int | None, tuple[int | tuple[int, str], ...]])r)r�z
Iterable[str])r�r<)Cr.�
__future__rrAr�r�r�r�r�r`r�rYr��configparserr�ior�typingrrrrr	r
rr��
babel.corer�babel.messages.catalogr
r�babel.messages.extractrrrr�babel.messages.mofiler�babel.messages.pofilerr�
babel.utilr�	getLoggerrer[rr&r)r,rArFrgr�r�r/rGrmr�r�r'r�r&r�r�rrrr"r#�<module>rs`���#�����	�	�
�
���(��.�.�$�(�)�:���+�3��
���� ��	�	�	�	�)�	�	��	����'�T3
�3
�lt#�\�t#�n
 � \�l�\�~H9�,�H9�VE�L�E�PK�K�\0�0�#�>4?�,#�b �5A�&?�
�&?��&?�3�&?�R
�-�`K��z���F�r"

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 472 B 0644
_compat.cpython-313.pyc File 1.42 KB 0644
catalog.cpython-313.pyc File 43.18 KB 0644
checkers.cpython-313.pyc File 6.54 KB 0644
extract.cpython-313.pyc File 32.85 KB 0644
frontend.cpython-313.pyc File 52.74 KB 0644
jslexer.cpython-313.pyc File 7.69 KB 0644
mofile.cpython-313.pyc File 7.77 KB 0644
plurals.cpython-313.pyc File 6.01 KB 0644
pofile.cpython-313.pyc File 32.1 KB 0644
setuptools_frontend.cpython-313.pyc File 4.07 KB 0644
Filemanager